【C3】06 选择器概述
CSS中,选择器用来指定网页上我们想要样式化的HTML元素。
CSS选择器有很多种可供使用,所以在选择要样式化的元素时,我们可以做到很精细的地步。
本文和本文的子篇中,我们将会很详细地讲授选择器不同的使用方式,并了解它们的工作原理。
| 学习前提: | 计算机的基本知识, 安装了基础软件,处理文件的基本知识,HTML基础(学习HTML介绍)以及对CSS工作方式的了解(学习CSS初步) |
|---|---|
| 目标: | 详细学习CSS选择器的工作方式。 |
选择器是啥?
你已经见过选择器了。CSS选择器是CSS规则的第一部分。
它是元素和其他项的一种组合形式,告诉了浏览器哪个HTML元素应当是被选为应用规则中的CSS属性值的那个。
元素被选择器所选择的话,就被叫做“选择器的对象”。

前面的文章中,你已经遇到过几种不同的选择器,了解到选择器可以以不同的方式指向文档,比如选择诸如h1的元素,或者是诸如.special的类。
CSS中,选择器由CSS选择器规范加以定义。就像是CSS的其他部分那样,它们需要浏览器的支持才能工作。
你会遇到的大多数选择器都是在三级选择器规范中定义的,这是一个成熟的规范,因此你会发现浏览器对这些选择器有良好的支持。
选择器列表
如果你有多于一个使用相同CSS的物件,那么这些单独的选择器可以被混编为一个“选择器列表”,这样,规则就可以应用到所有的单个选择器上了。
例如,如果我的h1和.special类有相同的CSS,那么我可以把它们写成两个分开的规则。
h1 {
color: blue;
}
.special {
color: blue;
}
我也可以将它们组合起来,在它们之间加上一个逗号,变为选择器列表。
h1, .special {
color: blue;
}
空格无论在逗号前面还是后面都可以,你可能还会发现如果每个选择器都另起一行,会更好读些。
h1,
.special {
color: blue;
}
在下面的实时示例中,试着把两个有ID声明的选择器组合起来。外观在组合起来以后应该还是一样的。
当你这样子给选择器放在一起时,如果任何一个选择器无效,那么整条规则都会被忽略。
在下面的示例中,无效的类选择器会被忽略,而h1仍会被样式化。
h1 {
color: blue;
}
..special {
color: blue;
}
但是在被组合起来以后,在整个规则都被认为是失效的时候,无论是h1还是这个类都不会被样式化。
h1, ..special {
color: blue;
}
选择器的种类
有几组不同的选择器,知道了需要哪种选择器的话,你会更容易找到做事时所需的正确工具。
在本文的子篇中,我们将会来更详细地看下不同种类的选择器。
类型、类和ID选择器
这个选择器组包含的选择器,指向了例如一个<h1>的HTML元素
h1 { }
它也包含了指向一个类的选择器:
.box { }
或者,一个ID:
#unique { }
标签属性选择器
这组选择器给了你根据一个元素上的某个标签属性的存否以选择元素的不同方式:
a[title] { }
或者甚至根据一个有特定值的标签属性是否存在,来做选择:
a[href="https://example.com"] { }
伪类与伪元素
这组选择器包含了伪类,用来样式化一个元素的特定状态。例如:hover伪类就只会在鼠标指针悬浮到一个元素上的时候选择这个元素:
a:hover { }
它还包含了伪元素,选择一个元素的某个部分而不是元素自己。例如,::first-line总是会选择一个元素(下面的情况中是<p>)中的第一行,表现得就像是一个<span>包在了第一个被格式化的行外面,然后<span>被选中了。
p::first-line { }
运算符
最后一组选择器将其他选择器组合起来,以图指向我们的文档里的选择器。下面的示例用子元素运算符(>)选择了<article>元素的初代子元素。
article > p { }
接下来要做的事情
你可以看下下面的选择器参考表,可以获得到这个学习章节——或者总体来说是MDN上——的各种选择器的直接链接;
你也可以继续下去,开始你的了解类型、类和ID选择器的旅程。
选择器参考表
下面的表格让你可以浏览你可以用的选择器,还有本指南中教你如何使用每种选择器的页面的链接。
我还加上了一个能查看浏览器对每个选择器的支持信息的MDN页面链接。
你可以把这个作为回头的参考,在你以后需要查询文献中提到的选择器的时候,或者是在你广义上实验CSS的时候。
| 选择器 | 示例 | 学习CSS的教程 |
|---|---|---|
| 类型选择器 | h1 { } |
类型选择器 |
| 通配选择器 | * { } |
通配选择器 |
| 类选择器 | .box { } |
类选择器 |
| ID选择器 | #unique { } |
ID选择器 |
| 标签属性选择器 | a[title] { } |
标签属性选择器 |
| 伪类选择器 | p:first-child { } |
伪类 |
| 伪元素选择器 | p::first-line { } |
伪元素 |
| 后代选择器 | article p |
后代运算符 |
| 子代选择器 | article > p |
子代选择器 |
| 相邻兄弟选择器 | h1 + p |
相邻兄弟 |
| 通用兄弟选择器 | h1 ~ p |
通用兄弟 |
【C3】06 选择器概述的更多相关文章
- jQuery选择器概述
1.基本选择器:1) #id : 根据给定的id匹配一个元素:2) .class: 根据给定的类名匹配元素:3)element: 根据给定的元素名匹配元素:4)* : 匹配所有元素:5)selecto ...
- css选择器概述
css选择器种类 id选择器 类选择器.属性选择器.伪类选择器 元素选择器.伪元素选择器 通配符选择器.子类选择器.后代选择器.相邻兄弟选择器.选择器分组 一.id选择器 <p id=" ...
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- CSS标签选择器(二)
一.CSS选择器概述 1.1.CSS功能 CSS语言具有两个基本功能:匹配和渲染 当浏览器在解析CSS样式时,首先应该确定哪些元素需要渲染,即匹配哪些HTML元素,这个操作由CSS样式中的选择器负责标 ...
- Windows Phone 执行模型概述
Windows Phone 执行模型控制在 Windows Phone 上运行的应用程序的生命周期,该过程从启动应用程序开始,直至应用程序终止. 该执行模型旨在始终为最终用户提供快速响应的体验.为此, ...
- jsoup使用选择器语法来查找元素
问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...
- jQuery选择器 之详述
jQuery选择器 一. 单词小计 Pervious 上一页sibling 同级first 第一last 最后not 不 Even 偶数 odd 奇数 header 页眉 一.jQ ...
- crawler_jsoup HTML解析器_使用选择器语法来查找元素
参照:http://www.open-open.com/jsoup/selector-syntax.htm 使用选择器语法来查找元素 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. ...
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制 1.代码更简单 示例2-1 使用javascript实现隔行变色 < ...
- H5与CS3权威下.18 and 19 选择器(1)
18章.CSS3概述 1.从前端技术的角度把互联网的发展分为三个阶段: (1)web1.0:HTML和CSS. (2)web2.0:Ajax,Javascript/DOM/异步数据请求. (3)web ...
随机推荐
- 机器学习笔记(2): Logistic 回归
Logistic 回归是线性回归中一个很重要的部分. Logistic 函数: \[\sigma(x) = \frac {L} {1 + \exp(-k(x - x_0))} \] 其中: \(L\) ...
- kettle从入门到精通 第三十九课 kettle 增量同步(日级)
1.上一课我们学习了在数据量大的情况下的分页全量同步示例,本次我们一起学习下kettle 增量全量同步.有些业务场景不需要实时数据,比如统计t-1日的销售业绩情况等. 2.kettle增量全量同步 ...
- kettle从入门到精通 第三十五课 kettle 变量
1.设置变量 a.可以通过转换中的"设置变量"步骤进行设置. b.手动通过kettle.properties文件或通过"编辑"菜单中的"设置环境变量& ...
- INFINI Labs 产品更新 | Gateway 支持基于 Kafka 的复制能力,发布 Helm Charts 部署方式
INFINI Labs 产品又更新啦~.本次更新概要如下:Easysearch 新增了索引字段相关统计 API,优化了 source_reuse 提升压缩效率:Gateway 新增诸多新特性,如:支持 ...
- java: 找不到符号 java: Compilation failed: internal java compiler error
java: 找不到符号 java: Compilation failed: internal java compiler error 1.File---->Setting------>ja ...
- LINQ to Entities does not recognize the method 'System.String ToString()' method
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method ca ...
- work03
第一题: 1.定义一个包含十个元素的数组.数组元素自己给出 2.遍历打印出数组元素 3.求出数组当中的最小值打印出来 4.求出数组当中的最大值打印出来 5,求数组当中 第二大 值 第二题: 1.定义一 ...
- 洛谷 P4343 自动刷题机
题目链接:自动刷题机 思路 二分典题,两个二分判断出可能的最大值和最小值.需要注意当删掉y行代码后,当前代码行数小于0时需要将代码行数重新赋值为0,然后需要注意二分的n最大值的边界,因为x[i]的最大 ...
- RTThread 自动网卡使用问题
最近使用 STM32 测试了一下 lwip 和 esp8266 的网络连接问题,使用 RTThread 的自动网卡时,发现不能很好的自动切换默认网卡,不能满足需求,所以自己简单的改了一下. 一.准备材 ...
- 高通Android UEFI XBL 代码流程分析
高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...