Встроенный CSS IE взломать - PullRequest
6 голосов
/ 17 октября 2008

Можно ли создать, например, блочную модель взлома при использовании встроенного CSS?

Например:

<div id="blah" style="padding: 5px; margin: 5px; width: 30px; /*IE5-6 Equivalent here*/">

Спасибо!

Ответы [ 7 ]

12 голосов
/ 17 октября 2008

Вы также можете использовать хак с «префиксом» во встроенных стилях:

<div style="*background:red"></div>

Просто убедитесь, что вы ставите хаки IE в конце атрибута style. Однако я придерживаюсь мнения, что при возможности следует избегать встроенных стилей. Условные комментарии и отдельный файл CSS для Internet Explorer - лучший способ справиться с такими проблемами.

10 голосов
/ 17 октября 2008

Я бы вышел наружу - шлепнул класс по этому элементу, или использовал бы свой идентификатор, и обработал бы стиль снаружи.

Я бы также согласился с условными комментариями, которые предшествовали моим.

Тем не менее: в качестве абсолютного в крайнем случае, вы можете использовать следующие хаки стиля для таргетинга <= IE6 и даже IE7. Проблема возникает, когда / если они исправляют IE8, чтобы победить ваш взлом. </p>

.foo {
padding: 5px;
^padding: 4px; /* this targets all IE, including 7. It must go first, or it overrides the following hack */
_padding: 3px; /* this targets >= IE6 */
width: 30px;
}

Удачи.

3 голосов
/ 17 октября 2008

Не споря за или против CSS-хаков, лично, если бы мне нужно было сделать что-то подобное, я бы предпочел использовать условный комментарий:

<!--[if lt IE 7]>
<style>
#blah {
padding: 5px;
margin: 5px;
width: 30px;
}
</style>
<![endif]-->
0 голосов
/ 24 марта 2010

Лучшее решение - это работать в режиме Standards Mode, а не в режиме Quirks .... это избавит вас от необходимости сразу же взламывать большинство ваших блочных моделей.

Кроме того, условные комментарии со специфической для IE таблицей стилей намного чище и удобнее в обслуживании. Этот метод был достаточно хорош для большинства первоклассных дизайнеров в течение последних нескольких лет ... если только на вашем сайте нет чего-то конкретного, что требует, чтобы все это было встроено, я предлагаю сделать шаг назад и посмотреть на корневые проблемы, а не на то, как Вы можете исправить эти маленькие симптомы, как они появляются. альтернативный текст http://sonicloft.net/im/52

0 голосов
/ 18 октября 2008

Да, как и все выше, если вы можете избежать этого, делайте !! Но если вам действительно нужно войти в строку, тогда фильтры парсера, вероятно, являются лучшим выбором, это определенные символы, которые вы можете использовать в свойствах, таких как хак с подчеркиванием в ie6

.
print("code sample");

 style="position:relative;padding:5px; _position:absolute; _padding:10px;" 

ie6 все равно получит подчеркнутые стили, все остальные просто проигнорируют их!

Там также используется! Важный вместо подчеркивания.

поиграйте и посмотрите, что произойдет, но опять же, как и выше, постарайтесь избегать, как чумы:)

0 голосов
/ 18 октября 2008

Имейте в виду, что IE 6 требует взлома блочной модели в режиме причуд , но не в режиме стандартов . IE 5 и IE 5.5 постоянно нуждаются в BMH.

Так что, если вы находитесь в стандартном режиме, вам нужно будет использовать что-то вроде оригинального voice-family хака (которое предназначено для IE 5.X и , а не IE 6) , Если вы находитесь в режиме причуд, подойдет любой старый взлом IE <= 6. </p>

(Содержание вашего вопроса подсказывает мне, что ваша страница отображается в режиме причуд).

0 голосов
/ 17 октября 2008

Наиболее подходящий ответ: не . (Правка: чтобы быть понятным, я имею в виду, не делайте это встроенным, я не имею в виду, не используйте CSS-хаки.)

Редактировать: это не работает, IE игнорирует условный комментарий. Оставив здесь ответ, чтобы не быть ублюдком.

Следующий наиболее подходящий ответ - условные комментарии:

<div id="blah" style="padding: 5px; margin: 5px; width: 30px; <!--[if lte IE 6]> ... <![endif]-->">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...