Можно ли создать, например, взлом блочной модели при использовании встроенного CSS?
Например:
<div id = "blah" style = "padding: 5px; margin: 5px; width: 30px; /*IE5-6 Equivalent here*/">
Спасибо!






Наиболее подходящий ответ - не. (Обновлено: чтобы было ясно, я имею в виду, что не делайте этого встроенным, я не имею в виду, что не используйте хаки CSS.)
Обновлено: это не работает, IE игнорирует условный комментарий. Оставляю здесь ответ, чтобы не быть ублюдком.
Следующий наиболее подходящий ответ - условные комментарии:
<div id = "blah" style = "padding: 5px; margin: 5px; width: 30px; <!--[if lte IE 6]> ... <![endif]-->">
Однако это недопустимый HTML.
Можно ли записывать такие условные комментарии в теги?
@Konrad: Почему бы и нет? Это действительный HTML-комментарий. IE интерпретирует его (что неверно), но это все еще действительный комментарий.
@Daimonan: Их можно писать везде, где можно написать комментарий.
Не споря за или против взлома CSS, лично, если мне нужно было сделать что-то подобное, я бы предпочел использовать условный комментарий:
<!--[if lt IE 7]>
<style>
#blah {
padding: 5px;
margin: 5px;
width: 30px;
}
</style>
<![endif]-->
Я бы вышел на улицу - наложил класс на этот элемент или использовал имеющийся у вас идентификатор и обработал бы стиль извне.
Я также согласен с предыдущими ответами на условные комментарии.
Тем не менее: в качестве последнего средства абсолютный вы можете использовать следующие хаки стиля для таргетинга на <= IE6 и даже IE7. Проблема возникает, когда / если они исправят IE8, чтобы победить ваш взлом.
.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;
}
Удачи.
Конечно. Фактически, любой символ, НО _ (подчеркивание) может быть использован, чтобы помешать IE7.
Вы также можете использовать хак "префикса" во встроенных стилях:
<div style = "*background:red"></div>
Просто убедитесь, что вы поместили хаки IE в конце атрибута стиля. Однако я разделяю мнение, что по возможности следует избегать встроенных стилей. Условные комментарии и отдельный файл CSS для Internet Explorer кажутся лучшим способом решения таких проблем.
Имейте в виду, что IE 6 требует взлома блочной модели в режиме причуд, но не в стандартном режиме. IE 5 и IE 5.5 постоянно нуждаются в BMH.
Поэтому, если вы находитесь в стандартном режиме, вам нужно будет использовать что-то вроде оригинальный взлом voice-family (предназначенное для IE 5.X и нет IE 6). Если вы находитесь в режиме причуд, подойдет любой старый взлом IE <= 6.
(Содержание вашего вопроса подсказывает мне, что ваша страница отображается в режиме причуд.)
Да, как и все выше, если вы можете не делать это встраиваемым образом, сделайте !! Но если вам действительно нужно встроиться, тогда фильтры парсера, вероятно, ваш лучший выбор, это определенные символы, которые вы можете использовать в свойствах, таких как хак подчеркивания в ie6
print("code sample");
style = "position:relative;padding:5px; _position:absolute; _padding:10px;"
ie6 по-прежнему получит подчеркнутые стили, все остальные просто проигнорируют их!
Также вместо подчеркивания используется! Important.
поиграйте и посмотрите, что произойдет, но снова, как указано выше, постарайтесь избежать, как чума :)
Лучшее решение - работать в стандартном режиме, а не в режиме Quirks .... это сразу устранит необходимость в большинстве хаков для вашей модели коробки.
Кроме того, условные комментарии с таблицей стилей, специфичной для IE, намного чище и удобнее в обслуживании. Этот метод был достаточно хорош для большинства первоклассных дизайнеров за последние несколько лет ... если на вашем сайте нет чего-то особенного, что требует, чтобы все это было встроено, я предлагаю сделать шаг назад и посмотреть на корневые проблемы, а не на то, как вы можете исправлять эти маленькие симптомы по мере их появления.альтернативный текст http://sonicloft.net/im/52
Действительно ли доля рынка IE5 стоит затраченных усилий? Я предлагаю поместить IE5 в ту же корзину, что и Netscape 4, и просто полностью скрыть от него таблицу стилей.