CSS(层叠样式表)提供了多种选择器,以便开发者能够精确地选择HTML元素并应用样式。以下是CSS中主要选择器的详细说明:
1. 元素选择器
语法:element { CSS样式 }
说明:根据HTML元素的名称来选择元素。例如,p { color: red; } 会选择所有的
元素并将其文本颜色设置为红色。
2. 类选择器
语法:.class名 { CSS样式 }
说明:选择所有具有指定类名的元素。类选择器以点号.开头,后跟类名。例如,.classselect { background: red; } 会选择所有class="classselect"的元素并设置其背景色为红色。
3. ID选择器
语法:#id名 { CSS样式 }
说明:选择具有指定ID的元素。ID选择器以井号#开头,后跟ID名,且每个ID在页面中应该是唯一的。例如,#idselect { height: 100px; } 会选择id="idselect"的元素并设置其高度为100像素。
4. 通配符选择器
语法:* { CSS样式 }
说明:选择所有元素。例如,* { margin: 0; padding: 0; } 会清除所有元素的默认边距和内边距。
5. 属性选择器
语法:[attribute], [attribute=value], [attribute~=value], [attribute|=value], [attribute=value], [attribute$=value], [attribute*=value]
说明:根据元素的属性及属性值来选择元素。例如,a[target=“_blank”] { color: red; } 会选择所有target属性值等于"_blank"的元素并设置其文本颜色为红色。
6. 关系选择器
后代选择器:selector1 selector2
说明:选择所有被selector1包含的selector2元素。例如,div span { color: blue; } 会选择所有
子选择器:selector1 > selector2
说明:选择所有selector1的直接子元素selector2。例如,ul > li { list-style-type: none; } 会选择所有
- 的直接子元素
- 并移除其项目符号。
相邻兄弟选择器:selector1 + selector2
说明:选择紧接在selector1后的兄弟元素selector2。例如,h1 + p { margin-top: 0; } 会选择所有紧接在元素后的
元素并设置其上边距为0。
通用兄弟选择器:selector1 ~ selector2
说明:选择selector1后的所有兄弟元素selector2。例如,h1 ~ p { color: grey; } 会选择所有元素后的
元素并设置其文本颜色为灰色。
7. 伪类选择器
结构性伪类:
:first-child, :last-child, :nth-child(n), :nth-last-child(n), :only-child, :first-of-type, :last-of-type, :nth-of-type(n), :nth-last-of-type(n), 和 :only-of-type 这些伪类选择器在CSS中用于根据元素在文档树(DOM树)中的位置来选择特定的元素。以下是每个选择器的详细说明:
:first-child
选择属于其父元素的第一个子元素的每一个元素。
例如,p:first-child 会选择所有作为其父元素第一个子元素的
标签。
:last-child
选择属于其父元素的最后一个子元素的每一个元素。
例如,p:last-child 会选择所有作为其父元素最后一个子元素的
标签。
:nth-child(n)
选择属于其父元素的第n个子元素的每一个元素,不论元素的类型。
n 可以是一个数字、关键词如 odd 或 even,或者是公式如 2n+1。
例如,p:nth-child(2) 会选择所有作为其父元素第二个子元素的
标签。
:nth-last-child(n)
选择属于其父元素的倒数第n个子元素的每一个元素,不论元素的类型。
n 的取值和 :nth-child(n) 相同。
例如,p:nth-last-child(1) 会选择所有作为其父元素最后一个子元素的
标签。
:only-child
选择属于其父元素的唯一子元素的每一个元素。
例如,p:only-child 会选择所有作为其父元素唯一子元素的
标签。
:first-of-type
选择属于其父元素中第一个特定类型的子元素。
例如,p:first-of-type 会选择所有作为其父元素中第一个
类型的子元素。
:last-of-type
选择属于其父元素中最后一个特定类型的子元素。
例如,p:last-of-type 会选择所有作为其父元素中最后一个
类型的子元素。
:nth-of-type(n)
选择属于其父元素中特定类型的第n个子元素。
n 的取值和 :nth-child(n) 相同。
例如,p:nth-of-type(2) 会选择所有作为其父元素中第二个
类型的子元素。
:nth-last-of-type(n)
选择属于其父元素中特定类型的倒数第n个子元素。
n 的取值和 :nth-child(n) 相同。
例如,p:nth-last-of-type(1) 会选择所有作为其父元素中最后一个
类型的子元素。
:only-of-type
选择属于其父元素中唯一特定类型的子元素。
例如,p:only-of-type 会选择所有作为其父元素中唯一
类型的子元素。
这些选择器使得开发者能够根据元素在父元素中的位置或类型来精确地应用样式,从而创建出更加复杂和动态的网页布局。
状态伪类:如:link, :visited, :hover, :active, :focus,用于选择处于特定状态的元素。
表单伪类:如:checked, :disabled, :enabled, :valid, :invalid, :required, :optional,用于选择表单元素的不同状态。
其他伪类:如:target, :not(selector), :has(selector), :root, :is(selector), :where(selector), :default, :empty, :fullscreen, :in-range, :out-of-range, :indeterminate, :read-only,用于选择具有特定属性或条件的元素。
8. 伪元素选择器
语法:::before, ::after, ::first-letter, ::first-line, ::selection
说明:选择元素的特定部分或插入内容。例如,p::before { content: "Note: "; color: red; } 会在每个
元素的内容前插入“Note: ”并设置其颜色为红色。
9. 群组选择器
语法:selector1, selector2, selector3 { CSS样式 }
说明:同时选择多个选择器选中的元素并应用相同的样式规则。例如,h1, h2, p { color: blue; } 会选择所有的
、
和
元素并设置其文本颜色为蓝色。
10. 复合选择器
交集选择器:element.class 或 element#id
说明:选择同时满足元素类型和类名或ID的元素。例如,div.classselect { background: red; } 会选择所有同时是
这些选择器可以单独使用,也可以组合起来使用,以实现更复杂和精细的样式控制。通过合理使用这些选择器,开发者可以创建出高度定制化和响应式的网页布局。