CSS-селекторы обычно нечувствительны к регистру; это включает селекторы класса и ID.
Но имена классов HTML являются чувствительно к регистру (определение атрибута), и это вызывает несоответствие в вашем втором примере. Это не изменилось в HTML5 . 1
Это потому, что чувствительность к регистру селекторов зависит от того, что говорит язык документа :
Синтаксис всех селекторов нечувствителен к регистру в диапазоне ASCII (т. Е. [Az] и [AZ] эквивалентны), за исключением частей, которые не контролируются селекторами. Чувствительность к регистру имен элементов языка документа, имен атрибутов и значений атрибутов в селекторах зависит от языка документа.
Таким образом, дается HTML - элемент с Selfcatering
классом , но без SelfCatering
класса, селекторы .Selfcatering
и [class~="Selfcatering"]
будет соответствовать его, в то время как селекторы .SelfCatering
и [class~="SelfCatering"]
не будет. 2
Если тип документа определит имена классов как нечувствительные к регистру, то вы получите совпадение независимо.
1 В режиме совместимости для всех браузеров классы и идентификаторы чувствительны к регистру. Это означает, что селекторы с несовпадающим регистром всегда будут совпадать. Это поведение одинаково во всех браузерах по устаревшим причинам и упоминается в этой статье .
2 Что стоит, уровень селекторов 4 содержит предложенный синтаксис для принудительного поиска без учета регистра значений атрибутов с помощью [class~="Selfcatering" i]
или [class~="SelfCatering" i]
. Оба селектора будут сопоставлять элемент HTML или XHTML либо с Selfcatering
классом, либо с SelfCatering
классом (или, конечно, с обоими). Однако такого синтаксиса для селекторов класса или идентификатора не существует (пока?), Возможно, потому, что они несут семантику, отличную от обычных селекторов атрибутов (с которой не связана семантика), или потому что сложно придумать подходящий синтаксис.