代码仓库:Plumbiu/css_review_selector
类型选择器也叫做“标签名选择器”或者是“元素选择器”,是由于在文档中选择了一个 HTML 标签/元素:
h1 {
color: red;
}
div {
margin: 0;
}
/* ... */
当 HTML 标签/元素设置 class
属性时,我们可以通过类选择器(.
)选择:
<div class="box">class=box</div>
.box {
color: red;
}
当 HTML 标签/元素设置 id
属性时,我们可以通过 ID 选择器(#
)选择:
<div id="box">id=box</div>
#box {
color: red;
}
全局元素器由一个 *
代指,表示文档中所有内容
* {
margin: 0;
}
这些选择器允许我们基于元素某个属性(例如 href
)是否存在,来匹配对应的元素
选择器 | 示例 | 示例描述 |
---|---|---|
[attr] | a[title] | 匹配一个带有 attr 属性的元素 |
[attr=value] | a[href=“https://blog.plumbiu.club”] | 匹配一个带有属性 attr 且属性 attr 值为 value 的元素 |
[attr~=value] | a[class=“special”] | 匹配一个带有属性 attr 且 attr 中含有 value 的值(因为像是 class 类名可以用空格分隔多个值) |
[attr|=value] | div[lang|=“zh”] | 匹配一个带有 attr 属性 且 attr 值正为 value,或者开始为 value,后面紧跟一个连字符的元素 |
注:连字符为
-
代码示例:
li[class]
:表示匹配所有带有 class
属性的 li
标签,所以所有 li
标签都被匹配li[class=“a”]
:表示匹配 class=“a”
的 li
标签,所以第 2 个 li
标签被匹配li[class~=“a”]
:表示匹配 class
含有 “a”
的标签,于是第 2、3 个 li
标签被匹配li[class|=“a”]
:表示匹配 class
为 为 “a”
,或者 以 “
a”
开头,后面紧跟连字符的元素,所以第 1、3 个 li
标签被选中<style>
li[class] {
background-color: skyblue;
margin: 20px 0;
}
li[class='a'] {
color: white;
}
li[class~='a'] {
background-color: orange;
}
li[class|='a'] {
color: yellow;
}
</style>
<body>
<ul>
<li class>11111</li>
<li class="a">11111</li>
<li class="a b">11111</li>
<li class="a-b">11111</li>
</ul>
</body>
效果:
选择器 | 示例 | 描述 |
---|---|---|
[attr^=value] | li[class^=“box-”] | 匹配一个 class 以 box- 开头的 li 标签 |
[attr$=value] | li[class$=“-box”] | 匹配一个 class 以 -box 结尾的 li 标签 |
[attr*=value] | li[class*=“box”] | 匹配一个 class 含有 value 的 li 标签 |
<style>
li[class^="a"] {
background-color: skyblue;
}
li[class$="a"] {
background-color: orange;
}
li[class*="a"] {
color: white;
}
</style>
<body>
<ul>
<li class="a-">11111</li>
<li class="cba">11111</li>
<li class="b-a">11111</li>
<li class="app">11111</li>
</ul>
</body>
效果:
如果想在大小写不敏感的情况下,匹配属性值,可以在闭合括号之前,使用 i
值。
li[class='a' i] {
color: red;
}
格式如下,相当于选择 class
为 box 的所有后代的 p
标签
.box p {
color: red;
}
格式如下,相当于选择 class
为 box 的子代所有 p
标签
.box > p {
color: red;
}
格式如下,相当于选择 class
为 box 的子代所有 p 标签的相邻兄弟标签 span
注:选择的是
span
标签
.box > p + span {
color: red;
}
如果我们想要选中一个兄弟元素(即同级元素),即使他们不相邻,可以使用通用兄弟选择器,格式如下:
.box > p ~ span {
color: red;
}