CSS3 选择器
在 CSS3 中新增了几种选择器,有一些在 CSS 选择器中已经讲过了。
关系选择器
E + F
:下一个满足条件的同级元素节点
div + p {
background: red;
}
<div>这是一个div</div>
<p>这是第一个p</p>
<p>这是第二个p</p>
E ~ F
:满足条件的所有同级元素节点
div ~ p {
background: red;
}
<div>这是一个div</div>
<p>这是第一个p</p>
<p>这是第二个p</p>
属性选择器
在 CSS 选择器里其实已经写了
E(attr ~= "val")
:属性存在独立一个 val 值的元素
E(attr |= "val")
:以 val 开头或以 val-开头的元素
E(attr ^= "val")
:以 val 开头的元素
E(attr $= "val")
:以 val 结尾的元素
E(attr *= "val")
:包含 val 的元素
伪元素选择器
E::placeholder
:可以设置placehodler的样式,如 input 框中,placeholder 的 color
E::selection
:可以设置 select 中文字选中时的 color、background-color、text-shadow等
伪类选择器
:root
:跟标签选择器
:target
:选中点击 a 标签后,锚点位置的样式。如下面的例子 #section1
被选中时 对应的锚点位置(id="section1")会被添加样式
<a href="#section1">Go to Section 1</a>
<div id="section1">
<h2>Section 1</h2>
<p>This is section one.</p>
</div>
div:target {
background-color: #d1e7dd;
border-left: 5px solid #198754;
}
E:not(s)
:E元素中,不满足 s 条件的元素
可被其他元素影响的选择器
使用这些选择其会考虑所有兄弟元素,而不仅仅是特定类型的元素(E)
E:first-child
:选中第一个同及子元素
E:last-child
:选中最后一个同级子元素
E:only-child
:选中唯一的元素
E:nth-child(n)
:根据 n 条件选择元素
<div>这是一个div</div>
<p>这是第一个p</p>
<p>这是第二个p</p>
<p>这是第三个p</p>
/* 偶数p背景色为红色 */
p:nth-child(2n) {
background: red;
}
这里可以看到由于 nth-child
中的条件不仅考虑特定类型 p,还考虑了 div,因此将为第一个 p 元素设置了背景色
以下选择器不考虑其他元素对其的影响(推荐)
E:first-of-type
:第一个
E:last-of-type
:最后一个
E:only-of-type
:唯一的
E:nth-of-type(n)
:满足条件的(常用)
<div>这是一个div</div>
<p>这是第一个p</p>
<p>这是第二个p</p>
<p>这是第三个p</p>
/* 偶数p背景色为红色 */
p:nth-of-child(2n) {
background: red;
}
这里因为 nth-of-child
中的条件只考虑特定类型 p,因此将第二个 p 元素设置了背景色
input属性相关的选择器
E:checked
:元素被选中 (input type="checkbox")
E:enabled
:匹配每一个启用状态的input元素(主要用于表但,没有被 disabled 的元素)
E:disabled
:带有 disabled 属性的input元素
E:read-only
:带有 readonly 属性的input元素
E:read-write
:带有 readwrite 属性的input元素