【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 ...
随机推荐
- SemanticKernel:添加插件
SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI.Azure OpenAI和Hugging Face等大型语言模型(LLMs)与C#.Python和Jav ...
- kettle从入门到精通 第五十二课 ETL之kettle Avro output
1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...
- C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initialize
C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initi ...
- JavaScript将类数组转换为数组的三种方法
// 类数组转换为数组 const list = [] // 假定为类数组 const arr1 = Array.from(list); const arr2 = Array.prototype.sp ...
- C++与Unity C#交互
C++与Unity C#交互 C++转C#小工具:https://github.com/jaredpar/pinvoke-interop-assistant C++ Custom.h #pragma ...
- 3D捕鱼大富翁源码分析
今天接受了一个捕鱼的源码,技术栈采用: 客户端:Unity 服务端:Java 数据库:mysql 缓存:redis 先来几张成品图 编辑编辑 编辑编辑 编辑 在代码中看到有腾讯推广渠道, ...
- 15-BFC
01 BFC官方解释 https://www.w3.org/TR/CSS2/visuren.html#normal-flow 大致意思如下 02 什么情况下会形成BFC MDN解释 https://d ...
- Zynq-7000 AP SoC Boot - Multiboot Tech Tip
背景 产品需要用到这个技术,在wiki找到了这篇文章. 创建者Confluence Wiki Admin Sep 24, 2018 in Xilinx-wiki Table of Contents D ...
- 你要的AI Agent工具都在这里
只有让LLM(大模型)学会使用工具,才能做出一系列实用的AI Agent,才能发挥出LLM真正的实力.本篇,我们让AI Agent使用更多的工具,比如:外部搜索.分析CSV.文生图.执行代码等. 1. ...
- 数据特征采样在 MySQL 同步一致性校验中的实践
作者:vivo 互联网存储研发团队 - Shang Yongxing 本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享. 一.背景 在 MySQL 的 ...