本文原出处于掘金,原作者:JowayYoung
基础选择器
| 选择器 | 别名 | 说明 | 版本 | 常用 |
|---|---|---|---|---|
| tag | 标签选择器 | 指定类型的标签 | 1 | √ |
| #id | ID 选择器 | 指定身份的标签 | 1 | √ |
| .class | 类选择器 | 指定类名的标签 | 1 | √ |
| * | 通配选择器 | 所有类型的标签 | 2 | √ |
层次选择器
| 选择器 | 别名 | 说明 | 版本 | 常用 |
|---|---|---|---|---|
| elemP elemC | 后代选择器 | 元素的后代元素 | 1 | √ |
| elemP>elemC | 子代选择器 | 元素的子代元素 | 2 | √ |
| elem1+elem2 | 相邻同胞选择器 | 元素相邻的同胞元素 | 2 | √ |
| elem1~elem2 | 通用同胞选择器 | 元素后面的同胞元素 | 3 | √ |
集合选择器
| 选择器 | 别名 | 说明 | 版本 | 常用 |
|---|---|---|---|---|
| elem1,elem2 | 并集选择器 | 多个指定的元素 | 1 | √ |
| elem.class | 交集选择器 | 指定类名的元素 | 1 | √ |
条件选择器
| 选择器 | 说明 | 版本 | 常用 |
|---|---|---|---|
| :has | 包含指定元素的元素 | 4 | × |
| :is | 指定条件的元素 | 4 | × |
| :not | 非指定条件的元素 | 4 | √ |
状态选择器
| 选择器 | 说明 | 版本 | 常用 |
|---|---|---|---|
| :active | 鼠标激活的元素 | 1 | × |
| :hover | 鼠标悬浮的元素 | 1 | √ |
| :link | 未访问的链接元素 | 1 | × |
| :visited | 已访问的链接元素 | 1 | × |
| :target | 当前锚点的元素 | 3 | × |
| :focus | 输入聚焦的表单元素 | 2 | √ |
| :required | 输入必填的表单元素 | 3 | √ |
| :checked | 选项选中的表单元素 | 3 | √ |
| :disabled | 事件禁用的表单元素 | 3 | √ |
| :read-only | 只读的表单元素 | 3 | × |
| :focus-within | 内部表单元素处于聚焦状态的元素 | 4 | √ |
| :blank | 输入为空的表单元素 | 4 | × |
| :placeholder-shown | 占位显示的表单元素 | 4 | √ |
| :playing | 开始播放的媒体元素 | 4 | × |
| :paused | 暂停播放的媒体元素 | 4 | × |
结构选择器
| 选择器 | 说明 | 版本 | 常用 |
|---|---|---|---|
| :root | 文档的根元素 | 3 | × |
| :empty | 无子元素的元素 | 3 | √ |
| :nth-child(n) | 元素中指定顺序索引的元素 | 3 | √ |
| :first-child | 元素中为首的元素 | 2 | √ |
| :last-child | 元素中为尾的元素 | 3 | √ |
| :only-child | 父元素仅有该元素的元素 | 3 | √ |
| :nth-of-type(n) | 标签中指定顺序索引的标签 | 3 | √ |
| :first-of-type | 标签中为首的标签 | 3 | √ |
| :last-of-type | 标签中为尾标签 | 3 | √ |
| :only-of-type | 父元素仅有该标签的标签 | 3 | √ |
属性选择器
| 选择器 | 说明 | 版本 | 常用 |
|---|---|---|---|
| [attr] | 指定属性的元素 | 2 | √ |
| [attr=val] | 属性等于指定值的元素 | 2 | √ |
| [attr*=val] | 属性包含指定值的元素 | 3 | √ |
| [attr^=val] | 属性以指定值开头的元素 | 3 | √ |
| [attr$=val] | 属性以指定值结尾的元素 | 3 | √ |
伪元素
| 选择器 | 说明 | 版本 | 常用 |
|---|---|---|---|
| ::before | 在元素前插入的内容 | 2 | √ |
| ::after | 在元素后插入的内容 | 2 | √ |
| ::first-letter | 元素的首字母 | 1 | × |
| ::first-line | 元素的首行 | 1 | × |
| ::selection | 鼠标选中的元素 | 3 | × |
| ::backdrop | 全屏模式的元素 | 4 | × |
| ::placeholder | 表单元素的占位 | 4 | √ |
选择器真正的用处不仅仅是说明选项里的描述,更多是搭配起来能起到的最大作用。这些选择器组成的选择器系统是整个 CSS 体系里的核心,使用选择器能带来以下好处。
- 清晰易读:对于那些结构与行为分离的写法,使用 sass/less 编写属性时结构会更清晰易读,减少很多无用或少用的类,保持 css 文件的整洁性和观赏性
- 确保一致:减少修改类而有可能导致样式失效的问题,有时修改类但未确保 HTML 和 CSS 的一致而导致样式失效
- 剔除累赘:减少无实质性使用的类,例如很多层嵌套的标签,这些标签可能只使用到一个属性,就没必要新建类关联
- 高效流畅:使用选择器可实现一些看似只能由 JS 才能实现的效果,既减少代码量也减少 JS 对 DOM 的操作,使得交互效果更流畅