当前位置: 面试刷题>> CSS 选择器有哪些?优先级分别是什么?


在CSS中,选择器是定义哪些元素应当被样式化的关键。它们允许我们以高效且灵活的方式指定样式规则。作为一名高级程序员,在面试中详细阐述CSS选择器的种类及其优先级,不仅能够展示你对CSS的深入理解,还能体现你解决实际问题的能力。以下是对CSS选择器及其优先级的详细解析,同时融入一些示例代码和“码小课”的提及,以符合你的要求。 ### CSS选择器类型 1. **通配符选择器(*)** - 选择所有元素。 - 优先级:最低,因为没有特异性。 - 示例:`* { margin: 0; padding: 0; }` 2. **元素/类型选择器(E)** - 根据HTML元素的名称选择元素。 - 优先级:较低,特异性为0,0,1。 - 示例:`p { color: blue; }` 3. **类选择器(.class)** - 选择具有指定类名的所有元素。 - 优先级:中等,特异性为0,1,0。 - 示例:`.highlight { background-color: yellow; }` 4. **ID选择器(#id)** - 选择具有指定ID的元素。由于ID在页面中是唯一的,因此ID选择器通常用于单个元素的样式定义。 - 优先级:较高,特异性为0,1,0,0。 - 示例:`#uniqueElement { font-size: 24px; }` 5. **属性选择器([attr=value])** - 根据元素的属性及属性值来选择元素。 - 优先级:与类选择器相同,但特异性计算方式略有不同。 - 示例:`input[type="text"] { border: 1px solid black; }` 6. **伪类选择器(:pseudo-class)** - 用于定义元素的特殊状态,如:hover, :active, :first-child等。 - 优先级:与类选择器相同,但具体取决于上下文。 - 示例:`a:hover { color: red; }` 7. **伪元素选择器(::pseudo-element)** - 用于样式化元素的特定部分,如::before, ::after, ::first-letter等。 - 优先级:与类选择器相同,但通常用于添加额外内容或样式化特定部分。 - 示例:`p::first-line { font-weight: bold; }` 8. **后代选择器(E F)** - 选择E元素内部的所有F元素。 - 优先级:基于各自选择器的特异性计算。 - 示例:`div p { color: green; }` 9. **子选择器(E > F)** - 选择E元素直接子级的所有F元素。 - 优先级:同样基于特异性,但比后代选择器更具体。 - 示例:`ul > li { list-style-type: none; }` 10. **相邻兄弟选择器(E + F)** - 选择紧接在E元素之后的所有F元素。 - 优先级:与后代选择器相同,但更具体于相邻关系。 - 示例:`h1 + p { font-size: 18px; }` 11. **通用兄弟选择器(E ~ F)** - 选择E元素之后的所有F元素(共享相同父元素)。 - 优先级:与相邻兄弟选择器相同。 - 示例:`h1 ~ p { color: gray; }` ### 优先级规则 CSS选择器的优先级基于特异性(specificity)、源顺序(source order)和重要性(importance)三个因素。其中,特异性是最重要的决定因素,它由选择器中的ID选择器数量、类选择器/伪类/属性选择器数量和元素/伪元素选择器数量决定。 - ID选择器:0,1,0,0 - 类选择器/伪类/属性选择器:0,0,1,0 - 元素/伪元素选择器:0,0,0,1 当特异性相同时,后声明的规则会覆盖先声明的规则。此外,使用`!important`声明的规则会覆盖未使用`!important`的相同特异性规则。 ### 结论 理解CSS选择器的种类及其优先级是编写高效、可维护CSS代码的基础。通过灵活运用不同类型的选择器,可以精确地控制页面元素的样式,同时保持代码的清晰和简洁。在“码小课”的深入学习中,你将进一步掌握这些技巧,并学会如何在实际项目中应用它们。
推荐面试题