Использовать двойные классы в 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.

В настоящее время все еще нужно избегать множества селекторов классов.