CSS常用选择器总结

一、核心说明

CSS 选择器的核心作用是 精准选中 HTML 中的目标元素,为其设置样式 ,优先级从高到低大致为:ID 选择器 > 类选择器 > 属性选择器 > 元素选择器 > 通配符选择器,后续每个类型会标注优先级相关信息。

二、常用选择器分类总结

1. 基础选择器(最常用、最核心)

基础选择器是 CSS 最基础的组成,也是其他复杂选择器的基础。

选择器类型 语法 作用 示例 & 效果
通配符选择器 * 选中页面中所有元素(包括根元素) css * { margin: 0; padding: 0; } 清除所有元素的默认边距(常用初始化)
元素选择器 标签名 选中页面中所有该标签的元素 css div { font-size: 14px; } 选中所有 <div> 元素,设置字体大小
类选择器 .类名 选中所有带有该 class 属性的元素 css .box { width: 100px; height: 100px; } 选中所有 class="box" 的元素
ID 选择器 #ID名 选中页面中唯一对应 ID的元素(ID 唯一) css #root { margin: 20px auto; } 选中 id="root" 的元素(Vue 挂载根元素常用)

注意:

  • 类选择器可重复使用(一个元素可多个类,多个元素可一个类),ID 选择器只能唯一对应一个元素;
  • 优先级:#ID > .类 > 元素 > *
2. 属性选择器

通过元素的「属性名」或「属性值」选中元素,适合框架自定义属性、表单元素等场景。

选择器语法 作用 示例 & 效果
[attr] 选中所有带有 attr 属性的元素 css [v-cloak] { display: none; } 选中所有带 v-cloak 属性的元素(解决插值闪烁)
[attr="value"] 选中 attr 属性值完全等于 value 的元素 css input[type="file"] { cursor: pointer; } 选中所有 type="file" 的输入框
[attr*="value"] 选中 attr 属性值包含 value 子串的元素 css img[src*="img"] { border: 1px solid #eee; } 选中图片路径包含 img 的图片
[attr^="value"] 选中 attr 属性值以 value 开头的元素 css a[href^="https://"] { color: #ff4949; } 选中所有外部链接(以 https:// 开头)
[attr$="value"] 选中 attr 属性值以 value 结尾的元素 css img[src$=".png"] { width: 100px; } 选中所有后缀为 .png 的图片

优先级:和类选择器同级(权重相同),多个属性选择器可叠加提升优先级。

3. 组合选择器(用于选中「关联元素」)

通过组合多个基础选择器,选中具有特定关系的元素(如父子、兄弟)。

选择器语法 关系描述 示例 & 效果
选择器1 选择器2 后代选择器:选中选择器 1 的所有后代(子、孙、曾孙等) css #root .box { background: pink; } 选中 #root 内所有 class="box" 的元素
选择器1 > 选择器2 子选择器:选中选择器 1 的直接子元素(仅儿子,不含孙子) css .demo > div { border: 1px solid #ccc; } 选中 .demo 直接包含的 <div>(孙子 <div> 不选中)
选择器1 + 选择器2 相邻兄弟选择器:选中选择器 1后面紧邻的一个兄弟元素 css h2 + p { margin-top: 10px; } 选中 <h2> 后面紧邻的第一个 <p> 元素
选择器1 ~ 选择器2 通用兄弟选择器:选中选择器 1后面所有的兄弟元素 css h2 ~ p { color: #666; } 选中 <h2> 后面所有的 <p> 元素(不限紧邻)
4. 伪类选择器(用于元素的「特殊状态 / 位置」)

伪类以 : 开头,用于选中元素的特定状态 (如 hover、选中)或特定位置(如第一个子元素),不修改 HTML 结构即可实现动态样式。

(1)常用「状态伪类」(表单 / 交互常用)
选择器语法 作用 示例 & 效果
:hover 选中元素鼠标悬浮时的状态 css button:hover { background: #409eff; color: #fff; } 按钮悬浮时变蓝
:active 选中元素被点击激活时的状态 css button:active { background: #337ecc; } 按钮点击时加深蓝色
:focus 选中元素获取焦点时的状态(如输入框) css input:focus { border-color: #409eff; outline: none; } 输入框聚焦时变蓝边框
:checked 选中表单元素被选中时的状态(复选框 / 单选框) css input[type="checkbox"]:checked { accent-color: #409eff; } 复选框选中时变蓝
(2)常用「位置伪类」(列表 / 布局常用)
选择器语法 作用 示例 & 效果
:first-child 选中父元素下的第一个子元素 css ul > li:first-child { color: #ff4949; } 列表第一个 li 变红
:last-child 选中父元素下的最后一个子元素 css ul > li:last-child { border-bottom: none; } 列表最后一个 li 去掉下边框
:nth-child(n) 选中父元素下的第 n 个子元素(n 可填数字 /odd/even) css ul > li:nth-child(even) { background: #f8f8f8; } 列表偶数行变浅灰(隔行变色)

优先级:和类选择器同级(权重相同)。

5. 伪元素选择器(用于创建「虚拟元素」)

伪元素以 :: 开头(CSS3 规范,旧版可写 :),用于创建不在 HTML 结构中的虚拟元素,常用于添加装饰性内容、清除浮动等。

选择器语法 作用 示例 & 效果
::before 在元素内部前面 创建虚拟元素(需配合 content 属性) css .title::before { content: ""; display: inline-block; width: 4px; height: 16px; background: #409eff; } 标题前添加蓝色小竖线
::after 在元素内部后面 创建虚拟元素(需配合 content 属性) css .clearfix::after { content: ""; display: block; clear: both; } 清除浮动(经典 clearfix 方案)
::text 选中元素内的所有文本内容 css h2::text { color: #333; } 设置 h2 文本颜色(兼容性一般)

注意:

  • 伪元素必须配合 content 属性(即使值为空 ""),否则无法显示;
  • 伪元素创建的是虚拟元素,无法通过 JS 获取和操作。

三、选择器优先级快速记忆

  1. 权重排序(从高到低)!important(最高,不推荐滥用)> #ID 选择器 > .类选择器/属性选择器/伪类选择器 > 元素选择器/伪元素选择器 > * 通配符选择器
  2. 叠加规则 :多个选择器组合时,权重叠加(如 #root .box input = ID 权重 + 类权重 + 元素权重);
  3. 就近原则:权重相同时,后定义的样式会覆盖先定义的样式。

四、总结

  1. 基础选择器(类、ID、元素)是日常开发的「主力军」,优先使用类选择器(可复用性强);
  2. 属性选择器适合处理框架自定义属性(如 [v-cloak])、表单元素、文件路径匹配;
  3. 组合选择器用于精准选中关联元素(如后代、子元素),简化 HTML 类名定义;
  4. 伪类 / 伪元素用于处理「特殊状态 / 虚拟元素」,无需修改 HTML 结构,提升开发效率;
  5. 优先级记忆核心:ID > 类 > 元素,权重相同时就近覆盖。
相关推荐
Trae1ounG2 小时前
Vue Iframe
前端·javascript·vue.js
阿部多瑞 ABU2 小时前
`tredomb`:一个面向「思想临界质量」初始化的 Python 工具
前端·python·ai写作
比特森林探险记3 小时前
React API集成与路由
前端·react.js·前端框架
爱上妖精的尾巴3 小时前
8-1 WPS JS宏 String.raw等关于字符串的3种引用方式
前端·javascript·vue.js·wps·js宏·jsa
hvang19883 小时前
某花顺隐藏了重仓涨幅,通过chrome插件计算基金的重仓涨幅
前端·javascript·chrome
Async Cipher3 小时前
TypeScript 的用法
前端·typescript
web打印社区3 小时前
vue页面打印:printjs实现与进阶方案推荐
前端·javascript·vue.js·electron·html
We་ct3 小时前
LeetCode 30. 串联所有单词的子串:从暴力到高效,滑动窗口优化详解
前端·算法·leetcode·typescript
木卫二号Coding4 小时前
Docker-构建自己的Web-Linux系统-Ubuntu:22.04
linux·前端·docker