CSS 选择器中的类名区分大小写吗?

问题描述 投票:0回答:5
html css css-selectors
5个回答
269
投票

CSS选择器通常不区分大小写;这包括类和 ID 选择器。

但是 HTML 类名区分大小写的(请参阅属性定义),这会导致第二个示例中的不匹配。这在 HTML5 中没有改变。1

这是因为选择器的区分大小写取决于文档语言的内容

所有选择器语法在 ASCII 范围内都不区分大小写(即 [a-z] 和 [A-Z] 等效),除了不受选择器控制的部分。选择器中文档语言元素名称、属性名称和属性值的大小写敏感性取决于文档语言。

因此,给定一个具有

Selfcatering
类但没有
SelfCatering
类的 HTML 元素,选择器
.Selfcatering
[class~="Selfcatering"]
将与其匹配,而选择器
.SelfCatering
[class~="SelfCatering"]
则不会。2

如果文档类型将类名定义为不区分大小写,那么无论如何都会有匹配项。


1 在所有浏览器的怪异模式下,类和 ID 不区分大小写。这意味着大小写不匹配的选择器将始终匹配。由于遗留原因,此行为在所有浏览器中都是一致的,并且在本文中提到。

2 就其价值而言,选择器级别 4 包含建议的语法,用于使用

[class~="Selfcatering" i]
[class~="SelfCatering" i]
强制对属性值进行不区分大小写的搜索。两个选择器都会将 HTML 或 XHTML 元素与
Selfcatering
类或
SelfCatering
类(或者,当然,两者)相匹配。然而,类或 ID 选择器还没有这样的语法(还?),大概是因为它们带有与常规属性选择器不同的语义(没有与之关联的语义),或者因为很难想出可用的语法。


68
投票

实际的 CSS 本身不区分大小写。

例如

wiDth:100%;

但名称必须区分大小写才能成为唯一标识符。


25
投票
不区分大小写

在怪异模式下,CSS 类和 id 名称不区分大小写。在 标准模式它们区分大小写。 (这也适用于 getElementsByClassName。)
了解更多。

有时,当您有如下错误的文档类型时,您的浏览器会进入怪异模式。

<!DOCTYPE html PUBLIC> <!DOCTYPE html anytext>

你应该使用标准文档类型

HTML 5

<!DOCTYPE html>

HTML 4.01 严格

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 过渡

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 框架集

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 严格

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 过渡

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 框架集

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

如果您的 CSS 类或 id 名称不区分大小写,请检查您的文档类型。


9
投票

但在 HTML5 中,类和 ID 区分大小写

因此,CSS 属性、值、伪类名称、伪元素名称、元素名称不区分大小写

CSS class、id、url、font-families 区分大小写。

注意:在 html quirks 模式下,即使对于 ID 和类,CSS 也不区分大小写(如果删除 doctype 声明)

CodePen 上的示例:

https://codepen.io/swapnilPakolu/pen/MWgvQyB?&editable=true#anon-signup

<!DOCTYPE html> <html> <head> <title>CSS case sensitive ?</title> <style> P#id {color:RED;} p#ID {font-size:30PX;} #iD {BORDER:4px solid blue;} .class {text-decoration:underLine;} .CLASS {background-color:graY;} .Class {font-weight:900;} #ID::afTeR {conTent:"colored text"; disPlay:bLock; color:#fAdAcA;} .class:hoVeR {background-color:lightblue;} </style> </head> <body> <p id="id" class="class">red and underline</p> <p id="ID" class="CLASS">30px font size and gray background</p> <p id="iD" class="Class">bold and blue border</p> </body> </html>



0
投票

© www.soinside.com 2019 - 2024. All rights reserved.