🔹一、基础选择器(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; | 最大(慎用) |