我有一些看起来像的代码
[class|="e"]
{
margin: 0 0 0 0;
}
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我应该用什么谷歌搜索?
我尝试搜索stackoverflow(可以找到标点符号)和谷歌,但很难搜索没有名称.
这被称为属性选择器.具体来说,|=
属性选择器查找具有给定属性的元素,其值与给定值完全匹配,或者以给定值开始,后面紧跟一个-
(前缀,如果可以).
您的选择器匹配class
具有以下值的属性的元素:
e
,或e-
.它相当于以下两个属性选择器的组合结果:
[class="e"], [class^="e-"]
Run Code Online (Sandbox Code Playgroud)
请注意,|=
它通常与语言属性一起使用,例如hreflang
和lang
,虽然在后者的情况下,:lang()
通常是首选 - 这个答案解释了两者之间的差异.
您可以使用|=
任何其他属性,但在将其与class
属性一起使用时要小心,因为它忽略了多个以空格分隔的类名 - 它始终查看整个属性值或值的最开头,而不是每个单独的类名.
例如,以下元素将匹配您的选择器,因为e
它e-c
出现在属性值的最开头:
<div class="e"></div>
<div class="e-c"></div>
<div class="e-c f"></div>
Run Code Online (Sandbox Code Playgroud)
但是,这些元素都不会与您的选择器匹配,因为该值以以下内容开头f
:
<div class="f e"></div>
<div class="f e-c"></div>
Run Code Online (Sandbox Code Playgroud)
如果您需要在可能具有多个类的元素上匹配类前缀,我建议使用另一组属性选择器:
[class^="e-"], [class*=" e-"]
Run Code Online (Sandbox Code Playgroud)
这将匹配.e-c
上面列出的所有元素.请参阅此其他答案以获得解释.