CSS 选择器完整分类表

165 阅读4分钟

基础选择器

类型选择器语法说明示例效果
元素选择器element选择指定 HTML 标签的所有元素p { color: red; }所有 <p> 文本变为红色
类选择器.class选择具有指定 class 的元素.btn { padding: 10px; }所有 class="btn" 元素增加内边距
ID 选择器#id选择具有指定 ID 的唯一元素#header { width: 100%; }ID 为 header 的元素宽度设为 100%
通配符选择器*选择页面中所有元素* { margin: 0; }所有元素外边距清零(常用于重置样式)

组合选择器

类型选择器语法说明示例效果
后代选择器A B选择 A 元素内部的所有 B 后代元素(包括子、孙等)div p { font-size: 16px; }所有在 <div> 内的 <p> 字号设为 16px
子元素选择器A > B选择 A 的 **直接子元素 **Bul > li { list-style: square; }只有 <ul> 的直接子 <li> 使用方块符号
相邻兄弟选择器A + B选择紧接在 A 元素后的 **第一个 **同级 B 元素h1 + p { margin-top: 0; }紧跟 <h1> 的第一个 <p> 上边距为 0
通用兄弟选择器A ~ B选择 A 元素后所有同级的 B 元素input:checked ~ label { color: green; }被选中的 checkbox 后的所有 label 变绿色

属性选择器

类型选择器语法说明示例效果
属性存在选择器[attr]选择具有指定属性的元素a[title] { border: 1px solid gray; }所有带 title 属性的链接加边框
属性值等于[attr="value"]属性值完全匹配img[src="logo.png"] { width: 100px; }源地址为 logo.png 的图片设宽 100px
属性值包含单词[attr~="word"]属性值中包含某个 独立单词(空格分隔)p[class~="highlight"] { background: yellow; }class="info highlight" 的段落高亮
属性值以...开头[attr^="val"]属性值以指定字符串 开头a[href^="https"] { color: blue; }所有 HTTPS 链接显示为蓝色
属性值以...结尾[attr$=".pdf"]属性值以指定字符串 结尾a[href$=".pdf"]::after { content: " (PDF)"; }PDF 链接后添加 (PDF) 提示
属性值包含子串[attr*="str"]属性值包含指定字符串(任意位置)img[src*="banner"] { opacity: 0.8; }图片路径含 banner 的透明度降低

伪类选择器

类型选择器语法说明示例效果
:hover:hover鼠标悬停时button:hover { background: gray; }鼠标移到按钮上背景变灰
:focus:focus元素获得焦点(如输入框)input:focus { outline: 2px solid blue; }输入框聚焦时有蓝色轮廓
:active:active元素被激活(如点击时)a:active { color: red; }链接点击瞬间变红
:visited:visited已访问过的链接a:visited { color: purple; }链接点击瞬间变红
:first-child:first-child作为父元素的 第一个子元素li:first-child { font-weight: bold; }列表第一项加粗
:last-child:last-child作为父元素的 最后一个子元素li:last-child { color: gray; }列表最后一项变灰
:nth-child(n):nth-child(n)第 n 个子元素(支持公式 2n+1tr:nth-child(odd) { background: #eee; }表格奇数行背景色交替
:nth-of-type(n):nth-of-type(n)同类型标签中的第 n 个p:nth-of-type(2) { margin-top: 20px; }第二个 <p> 上边距加大
:not(selector):not(...)选择 **不匹配 **该选择器的元素div:not(.sidebar) { width: 100%; }所有非 .sidebar 的 div 宽度 100%
:checked:checked选中的单选/复选框input:checked + label { font-weight: bold; }选中项的 label 加粗
:disabled:disabled被禁用的表单元素input:disabled { opacity: 0.5; }禁用输入框半透明
:first-of-type:first-of-type同类型中的第一个h2:first-of-type { margin-top: 0; }页面第一个 h2 上边距为 0
:last-of-type:last-of-type同类型中的最后一个img:last-of-type { border: none; }最后一个图片无边框

伪元素选择器

类型选择器语法说明示例效果
::before::before在元素内容前插入内容p::before { content: "▶ "; }每个段落前加一个箭头
::after::after在元素内容后插入内容a::after { content: " →"; }链接后加右箭头
::first-line::first-line选择文本第一行p::first-line { font-weight: bold; }段落首行加粗
::first-letter::first-letter选择文本第一个字母p::first-letter { font-size: 2em; }首字母放大(常用于杂志排版)
::selection::selection用户选中文本时的样式::selection { background: yellow; }选中文本背景变黄