
Совершенно случайно обнаружил некоторую особенность обработки CSS-правил в Internet Explorer версий 6 и ниже. Так получилось, что когда верстал макет одного из сайтов, то в CSS случайно между двумя классами не поставил пробел.
Вот было удивление: в Internet Explorer всё отображается правильно, а в остальных браузерах вообще не наблюдается изменений. И что-то подсказывало, что это не IE такой хороший. Где-то должна быть ошибка, которую он игнорирует…
Разобрался. Суть в том, что запись вида
.some_text.some_sentence { color: red; }
совершенно корректно воспринимается вышеуказанными версиями Internet Explorer.
Возьму для примера следующий код:
<p class="some_text“> Все слова данного текста отображаются чёрным цветом во всех браузерах, кроме Internet Explorer 6.0 и ниже. <span class=”some_sentence“>В этих версиях IE данное предложение отображается красным цветом.</span></p> <p>
Но замечу, что Internet Explorer игнорирует пробел только между двумя классами. Поэтому для правила вида
#some_text.some_words {[…]}
ничего не произойдёт.
Ещё одна особенность наблюдается при указании одного и того же правила, но двумя способами:
1) .some_text .some_words { color: green; } // с пробелом 2) .some_text.some_words { color: red; } // без пробела
В таком этом случае Internet Explorer отдаёт предпочтение правилу, записанному через пробел. То есть текст будет отображаться зелёным цветом, а не красным.
Ну, и напоследок хочу заметить, что при данном подходе CSS успешно проходит валидацию.
В то же время я не вижу какой-то целесобразности использовать данный «хак».
Автор: Никита Мосияш.