Использовать двойные классы в CSS IE6?
есть ли способ сделать IE6 понятием двойных классов,
скажем, у меня есть класс MenuButton с классом цвета и, возможно, с щелчком класса;
например:
.LeftContent a.MenuButton {..general rules..}
.LeftContent a.MenuButton.Orange {..sets background-image..}
.LeftContent a.MenuButton.Clicked {...hum ta dum...}
Теперь IE6 понимает <a class="MenuButton Orange">
, но при добавлении
Нажав, как <a class="MenuButton Orange Clicked">
, IE просто игнорирует
Нажато правило.
Конечно, я мог бы переписать мой CSS и иметь собственные правила для .MenuButtonOrange
и такие (и это, вероятно, заняло бы намного меньше времени, чем задание этого вопроса;-),
но golly, это просто так непривлекательно и Web 0.9...
Ура!
Ответы
Ответ 1
IE6 не поддерживает несколько селекторов классов. Причина, по которой вы видите изменение с классом Orange
, состоит в том, что a.MenuButton.Orange
интерпретируется IE6 как a.Orange
.
Я рекомендую структурировать вашу разметку таким образом, чтобы вы могли обойти это:
<div class="leftcontent">
<ul class="navmenu">
<li><a class="menubutton orange" href="#">One</a></li>
<li><a class="menubutton orange clicked" href="#">Two</a></li>
</ul>
</div>
Сгруппировавшись более конкретным предком, вы можете создать вариацию с классами, охваченными этим предком (в этом примере navmenu
):
.leftcontent .navmenu a { /* ... basic styles ... */ }
.leftcontent .navmenu a.orange { /* ... extra orange ... */ }
.leftcontent .navmenu a.clicked { /* ... bold text ... */ }
Это не так хорошо, как несколько классов, но я использовал его, чтобы обойти отсутствие поддержки в IE.
Ответ 2
Dean Edwards 'IE7 script добавляет поддержку нескольких классов для IE6.
См. http://code.google.com/p/ie7-js/
Ответ 3
Если я использую (как я писал в вопросе), тег-специфические правила, например .LeftContent a.MenuButton.Orange, он работает...
Он соответствует только им, если классы в селекторе находятся в том же порядке, что и классы в элементе.
Это не совсем так. IE6 (и IE7 в режиме Quirks) запоминает только один класс на селекторную часть. Если вы пишете два, второй первый переопределяет первый. Итак, 'a.MenuButton.Orange идентичен по сути' a.Orange.
В настоящее время все еще нужно избегать множества селекторов классов.