🔹一、基础选择器(Basic Selectors)
语法 | 名称 | 示例 | 说明 |
---|---|---|---|
* |
通配选择器 | * {margin: 0;} |
选择所有元素 |
element |
标签选择器 | p {color: red;} |
选择所有 <p> 标签 |
.class |
类选择器 | .btn {color: blue;} |
选择所有 class="btn" 的元素 |
#id |
ID选择器 | #header {font-size: 20px;} |
选择 id="header" 的元素 |
element.class |
标签+类选择器 | button.primary {background: green;} |
指定类的指定元素 |
🔹二、组合选择器(Combination Selectors)
语法 | 名称 | 示例 | 说明 |
---|---|---|---|
A B |
后代选择器 | div p {} |
选择 div 内所有 p |
A > B |
子元素选择器 | ul > li {} |
只选择直接子元素 |
A + B |
相邻兄弟选择器 | h2 + p {} |
选择紧挨着的 p |
A ~ B |
通用兄弟选择器 | h2 ~ p {} |
所有在 h2 后面的 p |
🔹三、伪类选择器(Pseudo-classes)
语法 | 名称 | 示例 | 说明 |
---|---|---|---|
:hover |
鼠标悬停 | a:hover {} |
鼠标悬停时样式 |
:active |
激活 | button:active {} |
鼠标点击时样式 |
:focus |
获得焦点 | input:focus {} |
输入框被点击时 |
:first-child |
第一个子元素 | li:first-child {} |
选择父元素的第一个子元素 |
:last-child |
最后一个子元素 | li:last-child {} |
同理,最后一个 |
:nth-child(n) |
第n个子元素 | li:nth-child(2) {} |
选择第2个子元素 |
:not(X) |
非X的元素 | div:not(.active) {} |
排除某些元素 |
🔹四、伪元素选择器(Pseudo-elements)
语法 | 名称 | 示例 | 说明 |
---|---|---|---|
::before |
内容前 | h1::before {content: "*";} |
添加内容前缀 |
::after |
内容后 | h1::after {content: ".";} |
添加内容后缀 |
::first-letter |
首字母 | p::first-letter {font-size: 200%;} |
放大首字母 |
::first-line |
首行 | p::first-line {} |
首行样式 |
::selection |
选中文本 | ::selection {background: yellow;} |
文本被选中时 |
🔹五、属性选择器(Attribute Selectors)
语法 | 名称 | 示例 | 说明 |
---|---|---|---|
[attr] |
有该属性 | [disabled] {} |
有 disabled 属性的元素 |
[attr=value] |
属性值等于 | [type="text"] {} |
属性值为 text 的 input |
[attr^=value] |
属性值开头 | [href^="https"] {} |
开头是 https 的链接 |
[attr$=value] |
属性值结尾 | [src$=".jpg"] {} |
后缀为 .jpg 的图片 |
[attr*=value] |
属性值包含 | [title*="提示"] {} |
含有"提示"二字的 title |
🔹六、层叠与优先级规则(Cascading & Specificity)
类型 | 示例 | 优先级(高 → 低) |
---|---|---|
内联样式 | <div style=""> |
1000 |
ID选择器 | #id |
0100 |
类、伪类、属性选择器 | .class , :hover , [type="text"] |
0010 |
标签选择器、伪元素 | div , ::after |
0001 |
通配符或继承 | * , body div |
0000 |
⚠️ 多个规则冲突时,以优先级高的为准,若优先级一样,则后写的覆盖前写的。
🔹七、重要性控制
语法 | 名称 | 示例 | 优先级 |
---|---|---|---|
!important |
强制优先 | color: red !important; |
最大(慎用) |