2014-08-29 1 views
4

В течение некоторого времени я использую небольшой трюк, который, как я думал, был умным.# id # id: Повторяющиеся вхождения одного и того же простого селектора должны повысить специфичность, но не для идентификаторов в IE9

Это комбинирует один и тот же селектор css, чтобы добавить спецификацию в селектор правил.

CSS функции упоминают:

Примечание: Повторные occurrances одного и того же простого селектора допускаются и действительно повышают специфичность.

http://www.w3.org/TR/css3-selectors/#specificity

Например, если HTML является

<body> 
    <section id="main"> 
     <header class="titles"> 
      <h2>Title red</h2> 
      <h2 class="blue">Title blue</h2> 
     </header> 
     <h2 class="blue">Title blue</h2> 
    </section> 
</body> 

И CSS

#main .titles h2{ 
    color: red; 
} 
#main .blue.blue{ 
    color: blue; 
} 

Это так, как я могу использовать класс .blue переопределить стили, события в заголовке .. .

(Я делаю это, потому что ненавижу использовать !important. Мне следует избегать любой ценой.)

Первый селектор весит 0111 (1 идентификатор, 1 класс, 1 элемент) Второй селектор весит 0120 (1 И.Д., 2 класса)

Иногда я делаю это с идентификаторы. И это работает ... в реальных браузерах ... Этот селектор:

#main#main .blue{} 

должен весить 0200, так как он получил 2 Идентификаторы правильно?

Хорошо IE9 (не пробовал другие) не интерпретирует несколько идентичных идентификаторов в селекторах. Этот селектор не будет перекрывать #main .titles h2{} в IE9 ...

CSS консоль IE показывает вычисляемый селектор, равный #main .blue и удаляет второй ...

вхождение

Почему?

Для меня это всего лишь другая реализация IE «ошибка».

Как предложил @BoltClock, я подал рапорт здесь:

https://connect.microsoft.com/IE/feedbackdetail/view/958790/repeated-occurrences-of-the-same-simple-selector-should-increase-specificity-even-with-ids

+0

Я могу подтвердить, это странно CSS: # body # body.blue {} –

+0

Вы имеете в виду #body #body .blue {}? – denisol

+0

Я не думаю, что это предполагаемое поведение, поэтому, пока оно работает прямо сейчас, оно может быть изменено в будущем, поэтому ваша веб-страница будет выглядеть иначе. Если вы хотите переопределить стиль, просто используйте! Important. –

ответ

4

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

Это, как сообщается, ранее, как и при поиске Microsoft Connect, появляется существующий отчет, но по какой-то причине я не могу его просматривать. Этот вопрос все еще присутствует в IE11; если вы не можете просмотреть отчет, не стесняйтесь записывать другой.

+0

Спасибо! Я тайно надеялся, что ВЫ ответите на это :-) Сообщение отправлено ... https://connect.microsoft.com/IE/feedbackdetail/view/958790/repeated-occurrences-of-the-same-simple-selector-should-increase -специфичность-чет-с-ids –

+0

@Armel Larcier: Ха-ха, это мое удовольствие;) – BoltClock

Смежные вопросы