Игнорируются стили при использовании одинаковых значений атрибута id в IE

Popoff

popoff.donetsk.ua
Игнорируются стили при использовании одинаковых значений атрибута id в IE

Есть такая такой HTML:
PHP:
<html>
  <head>
    <style>
      .a#c, .b#c {
        background-color: #eeeeee
      }
    </style>
  </head>
  <body>
    <div class="a" id="c">
      1
    </div>
    <div class="b" id="c">
      2
    </div>
  </body>
</html>
В IЕ 6.0 строка 1 отображается на белом фоне, а строка 2 - на сером.

Если таблицу стилей записать так (при нажатии "сохранить как - страница целиком" IE автоматом преобразует таблицу стилей таким способом):

PHP:
.a#c {
  background-color: #eeeeee
}
.b#c {
  background-color: #eeeeee
}
то строка 2 отобразится на белом фоне, а строка 1 - на сером.

Фишка касается только 6 версии IE. В IE5, в опере и мозиле во всех случаях обе строки - серые.

Если кого интересует исходная задача, то она состояла в том, что я хотел сделать таблицу <table>, у которой пары строк при помощи таблицы стилей раскрашены разными цветами, например, 1 и 2 строки - тёмные, 3 и 4 - светлые, 5,6 - тёмные, 7-8 - светлые и т.п. Но при этом я хотел использовать также и возможность использования подклассов, которые были бы одинаковые, не зависимо от цвета строки. То есть, записать в таблице стилей примерно так:
.a#dark { background-color:#dddddd }
.a#light { background-color:#eeeeee }
.a .d { font-weight:bold }
Хотелось просто избежать повторов, подобного такому:
.a-dark { background-color:#dddddd }
.a-light { background-color:#eeeeee }
.a-dark .d,.a-light .d { font-weight:bold }
так как подклассов для класса .a - много, а не только один .d, да и иерархия у меня не двухуровневая.

Собственно, вопроса тут нету, так как решение, в общем-то очевидно - не использовать идентификаторы, а ввести дополнительный класс. Это, может, не очень красиво, зато, видимо, более универсально. Это я сюда запостил, потому что подумал, что, может, кому-нибудь будет интересно знать, что не всё там просто с этими идентификаторами и без особой надобности их лучше не использовать в таблицах стилей.

Хотя нет, есть вопрос. Это у всех так или, может, только у меня? %)
 

HraKK

Мудак
Команда форума
у всех.
Индификатор на то и индификатор что бы быть уникальным.
 

Crazy

Developer
Re: Игнорируются стили при использовании одинаковых значений атрибута id в IE

Автор оригинала: Popoff
Собственно, вопроса тут нету, так как решение, в общем-то очевидно - не использовать идентификаторы, а ввести дополнительный класс.
Правильное решение:

1. Прочитать ВНИМАТЕЛЬНО учебник HTML и CSS. Если в учебнике сказано, что можно создавать в документе несколько элементов с одинаковым id -- аккуратно отделить книгу от обложки, разобрать на листы и снести в сортир. Взамен купить новую, от другого автора.
2. Использовать id и классы так, как это описано в стандарте.

P.S.
- Доктор, когда я бью себя молотком по голове -- мне больно.
- А вы, больной, не бейте себя молотком по голове.
 
Сверху