# 第 13 章 CSS 选择器[上]
学习要点:
1.选择器总汇
2.基本选择器
3.复合选择器
4.伪元素选择器
主讲教师:李炎恢
本章主要探讨 HTML5 中 CSS 选择器,通过选择器定位到想要设置样式的元素。目前 CSS 选择器的版本已经升级至第三代,即 CSS3 选择器。CSS3 选择器提供了更多、更丰富的选择器方式,主要分为三大类。
**一.选择器总汇**
本节课主要涉及到三种选择器:基本选择器、复合选择器和伪元素选择器,具体如下:
| **选择器** | **名称** | **说明** | **CSS 版本** |
| --- | --- |
| * | 通用选择器 | 选择所有元素 | 2 |
| <type> | 元素选择器 | 选择指定类型的元素 | 1 |
| #<id> | id 选择器 | 选择指定 id 属性的元素 | 1 |
| .<class> | class 选择器 | 选择指定 class 属性的元素 | 1 |
| [attr]系列 | 属性选择器 | 选择指定 attr 属性的元素 | 2 ~ 3 |
| s1,s2,s3... | 分组选择器 | 选择多个选择器的元素 | 1 |
| s1 s2 | 后代选择器 | 选择指定选择器的后代元素 | 1 |
| s1 > s2 | 子选择器 | 选择指定选择器的子元素 | 2 |
| s1 + s2 | 相邻兄弟选择器 | 选择指定选择器相邻的元素 | 2 |
| s1 ~ s2 | 普通兄弟选择器 | 选择指定选择器后面的元素 | 3 |
| ::first-line | 伪元素选择器 | 选择块级元素文本的首行 | 1 |
| ::first-letter | 伪元素选择器 | 选择块级元素文本的首字母 | 1 |
| ::before | 伪元素选择器 | 选择元素之前插入内容 | 2 |
| ::after | 伪元素选择器 | 选择元素之后插入内容 | 2 |
**二.基本选择器**
使用简单且频率高的一些选择器归类为基本选择器。
**1.****通用选择器**
```
* { border: 1px solid red;
}
```
解释:“*”号选择器是通用选择器,功能是匹配所有 html 元素的选择器包括<html>和<body>标签。可以使用如下元素标记测试效果:
```
<p>段落</p>
<b>加粗</b>
<span>无</span>
```
通用选择器会将所有元素匹配并配置样式,这是把双刃剑,好处就是非常方便,坏处就是将不必要的元素也配置了。目前为止,还不存在所有元素都必须配置的样式,所以,一般来说,不常用。
**2.****元素选择器**
```
p { color: red;
}
```
```
<p>段落</p>
```
解释:直接使用元素名称作为选择器名即可。
**3.ID** **选择器**
```
#abc { font-size: 20px;
}
```
```
<p id="abc">段落</p>
```
解释:通过对元素设置全局属性 id,然后使用#id 值来选择页面唯一元素。
**4.****类选择器**
```
.abc { border: 1px solid red;
}
```
```
<b class="abc">加粗</b>
<span class="abc">无</span>
```
解释:通过对元素设置全局属性 class,然后使用.class 值选择页面一个或多个元素。
```
b.abc { border: 1px solid red;
}
```
解释:也可以使用“元素.class 值”的形式,限定某种类型的元素。
```
<span class="abc edf">无</span>
```
解释:类选择器还可以调用多个样式,中间用空格隔开进行层叠。
**5.****属性选择器**
//所需 CSS2 版本
```
[href] { color: orange;
}
```
解释:属性选择器,直接通过两个中括号里面包含属性名即可。当然,还有更多扩展的属性选择器。
//所需 CSS2 版本
```
[type="password"] { border: 1px solid red;
}
```
解释:匹配属性值的属性选择器。
//所需版本 CSS3
```
[href^="http"] { color: orange;
}
```
解释:属性值开头匹配的属性选择器。
//所需版本 CSS3
```
[href$=".com"] { color: orange;
}
```
解释:属性值结尾匹配的属性选择器。
//所需版本 CSS3
```
[href*="baidu"] { color: orange;
}
```
解释:属性值包含指定字符的属性选择器。
//所需版本 CSS2
```
[class~="edf"] { font-size: 50px;
}
```
解释:属性值具有多个值时,匹配其中一个值的属性选择器。
//所需版本 CSS2
```
[lang|="en"] { color: red;
}
```
解释:属性值具有多个值且使用“-”号连接符分割的其中一个值的属性选择器。比如
```
<i lang="en-us">HTML5</i>
```
**二.复合选择器**
将不同的选择器进行组合形成新的特定匹配,我们称为复合选择器。
**1.****分组选择器**
```
p,b,i,span { color: red;
}
```
解释:将多个选择器通过逗号分割,同时设置一组样式。当然,不但可以分组元素选择器,还可以使用 ID 选择器、类选择器、属性选择器混合使用。
**2.****后代选择器**
```
p b { color: red;
}
```
解释:选择<p>元素内部所有<b>元素。不在乎<b>的层次深度。当然,后代选择器也可以混合使用 ID 选择器、类选择器、属性选择器。
**3.****子选择器**
```
ul > li { border: 1px solid red;
}
```
```
<ul>
<li> 我是儿子 <ol>
<li> 我是孙子 </li>
<li> 我是孙子 </li>
</ol>
</li>
<li> 我是儿子 </li>
<li> 我是儿子 </li>
</ul>
```
解释:子选择器类似与后代选择器,而最大的区别就是子选择器只能选择父元素向下一级的元素,不可以再往下选择。
**4.****相邻兄弟选择器**
```
p + b { color: red;
}
```
解释:相邻兄弟选择器匹配和第一个元素相邻的第二个元素。
**5.****普通兄弟选择器**
```
p ~ b { color: red;
}
```
解释:普通兄弟选择器匹配和第一个元素后面的所有元素。
**三.伪元素选择器**
伪选择器分为两种第一种是下节伪类选择器,还有一种就是伪元素选择器。这两种选择器特性上比较容易混淆,在 CSS3 中为了区分,伪元素前置两个冒号(::),伪类前置一个冒号(:)。
**1.::first-line** **块级首行**
```
::first-line { color: red;
}
```
解释:块级元素比如<p>、<div>等的首行文本被选定。如果想限定某种元素,可以加上前置 p::first-line。
**2.::first-letter** **块级首字母**
```
::first-letter { color: red;
}
```
解释:块级元素的首行字母。
**3.::before** **文本前插入**
```
a::before { content: '点击-';
}
```
解释:在文本前插入内容。
**4.::after** **文本后插入**
```
a::before { content: '-请进';
}
```
解释:在文本后插入内容。
- 介绍
- HTML/CSS 教程
- 第 1 章 HTML5 概述
- 第 2 章 基本格式
- 第 3 章 文本元素
- 第 4 章 超链接和路径
- 第 5 章 分组元素
- 第 6 章 表格元素
- 第 7 章 文档元素
- 第 8 章 嵌入元素
- 第 9 章 音频和视频
- 第 10 章 表单元素[上]
- 第 10 章 表单元素[中]
- 第 10 章 表单元素[下]
- 第 11 章 全局属性和其他
- 第 12 章 CSS 入门
- 第 13 章 CSS 选择器[上]
- 第 14 章 CSS 颜色与度量单位
- 第 15 章 CSS 文本样式[上]
- 第 15 章 CSS 文本样式[下]
- 第 16 章 CSS 盒模型[上]
- 第 16 章 CSS 盒模型[下]
- 第 17 章 CSS 边框与背景[上]
- 第 17 章 CSS 边框与背景[下]
- 第 18 章 CSS 表格与列表
- 第 19 章 CSS 其他样式
- 第 20 章 CSS3 前缀和 rem
- 第 21 章 CSS3 文本效果
- 第 21 章 CSS3 文本效果
- 第 23 章 CSS3 边框图片效果
- 第 24 章 CSS3 变形效果[下]
- 第 25 章 CSS3 过渡效果
- 第 26 章 CSS3 动画效果
- 第 27 章 CSS 传统布局[上]
- 第 27 章 CSS 传统布局[下]
- 第 28 章 CSS3 多列布局
- 第 29 章 CSS3 弹性伸缩布局[上]
- 第 29 章 CSS3 弹性伸缩布局[中]
- 第 29 章 CSS3 弹性伸缩布局[下]
- 第 30 章 使用 Emmet 插件
- Bootstrap 教程
- 第 1 章 Bootstrap 介绍
- 第 2 章 排版样式
- 第 3 章 表格和按钮
- 第 4 章 表单和图片
- 第 5 章 栅格系统
- 第 6 章 辅组类和响应式工具
- 第 7 章 图标菜单按钮组件
- 第 8 章 输入框和导航组件
- 第 9 章 路径分页标签和徽章组件
- 第 10 章 巨幕页头缩略图和警告框组件
- 第 11 章 进度条媒体对象和 Well 组件
- 第 12 章 列表组面板和嵌入组件
- 第 13 章 模态框插件
- 第 14 章 下拉菜单和滚动监听插件
- 第 15 章 标签页和工具提示插件
- 第 16 章 弹出框和警告框插件
- 第 17 章 按钮和折叠插件
- 第 18 章 轮播插件
- 第 19 章 附加导航插件
- 第 20 章 项目实战--响应式导航[1]
- 第 20 章 项目实战--响应式轮播图[2]
- 第 20 章 项目实战--首页内容介绍[上][3]
- 第 20 章 项目实战--首页内容介绍[下][4]
- 第 20 章 项目实战--资讯内容[5,6]
- 第 20 章 项目实战--案例和关于[7]
- javaScript 教程
- javascript快速入门1--JavaScript前世今生,HelloWorld与开发环境
- javascript快速入门2--变量,小学生数学与简单的交互
- javascript快速入门3--分支判断与循环
- javascript快速入门4--函数与内置对象
- javascript快速入门5--数组与对象
- javascript快速入门6--Script标签与访问HTML页面
- javascript快速入门7--ECMAScript语法基础
- javascript快速入门8--值,类型与类型转换
- javascript快速入门9--引用类型
- javascript快速入门10--运算符,语句
- javascript快速入门11--正则表达式
- javascript快速入门12--函数式与面向对象
- javascript快速入门13--BOM——浏览器对象模型(Browser Object Model)
- javascript快速入门14--DOM基础
- javascript快速入门15--节点
- javascript快速入门15--表单
- javascript快速入门16--表格
- javascript快速入门17--事件
- javascript快速入门18--样式
- javascript快速入门19--定位
- javascript快速入门20--Cookie
- javascript快速入门21--DOM总结
- javascript快速入门22--Ajax简介
- javascript快速入门23--XHR—XMLHttpRequest对象
- javascript快速入门24--XML基础
- javascript快速入门25--浏览器中的XML
- javascript快速入门26--XPath
- javascript快速入门27--XSLT基础
- PHP 教程
- 第一章 如何加载运行已发布的PHP项目
- 第二章 PHP基础
- 第三章 操作符与控制结构
- 第四章 数学运算
- 第五章 数组
- 第六章 目录与文件
- 第七章 自定义函数
- 第八章 字符串处理
- 第九章 正则表达式
- 第十章 日期与时间
- 第十一章 表单与验证
- 第十二章 会话控制
- 第十三章 上传文件
- 第十四章 处理图像
- 第十五章 MySQL 数据库
- 第十六章 PHP 操作MySQL
- 第十七章 面向对象基础
- 第十八章 面向对象的特性
- 第十九章 面向对象的工具