CSS-селектори, як правило, не чутливі до регістру; сюди входять селектори класів та ідентифікаторів.
Але назви класів 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
класу (або, звичайно, обом). Однак для селекторів класів або ідентифікаторів такого синтаксису немає (все ж?), Мабуть, тому, що вони несуть різну семантику від звичайних селекторів атрибутів (які не мають пов'язаної з ними семантики), або тому, що важко придумати корисний синтаксис.