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 选择器概述的更多相关文章

  1. jQuery选择器概述

    1.基本选择器:1) #id : 根据给定的id匹配一个元素:2) .class: 根据给定的类名匹配元素:3)element: 根据给定的元素名匹配元素:4)* : 匹配所有元素:5)selecto ...

  2. css选择器概述

    css选择器种类 id选择器 类选择器.属性选择器.伪类选择器 元素选择器.伪元素选择器 通配符选择器.子类选择器.后代选择器.相邻兄弟选择器.选择器分组 一.id选择器 <p id=" ...

  3. Linux高级编程--06.进程概述

    进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...

  4. CSS标签选择器(二)

    一.CSS选择器概述 1.1.CSS功能 CSS语言具有两个基本功能:匹配和渲染 当浏览器在解析CSS样式时,首先应该确定哪些元素需要渲染,即匹配哪些HTML元素,这个操作由CSS样式中的选择器负责标 ...

  5. Windows Phone 执行模型概述

    Windows Phone 执行模型控制在 Windows Phone 上运行的应用程序的生命周期,该过程从启动应用程序开始,直至应用程序终止. 该执行模型旨在始终为最终用户提供快速响应的体验.为此, ...

  6. jsoup使用选择器语法来查找元素

    问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...

  7. jQuery选择器 之详述

    jQuery选择器 一. 单词小计 Pervious 上一页sibling  同级first  第一last  最后not  不 Even  偶数    odd  奇数 header  页眉 一.jQ ...

  8. crawler_jsoup HTML解析器_使用选择器语法来查找元素

    参照:http://www.open-open.com/jsoup/selector-syntax.htm 使用选择器语法来查找元素 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. ...

  9. 《jQuery权威指南》学习笔记之第2章 jQuery选择器

    2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制  1.代码更简单   示例2-1     使用javascript实现隔行变色 < ...

  10. H5与CS3权威下.18 and 19 选择器(1)

    18章.CSS3概述 1.从前端技术的角度把互联网的发展分为三个阶段: (1)web1.0:HTML和CSS. (2)web2.0:Ajax,Javascript/DOM/异步数据请求. (3)web ...

随机推荐

  1. 头条abogus与Js补环境代理Upgrade!

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  2. react 样式继承 属性传递

    # 样式 import styled from 'styled-components' const Button = styled.button` font-size: 20px; border: 1 ...

  3. The solution of P5339

    problem 容斥好题,结果题解里面一堆 \(\text{NTT}\). 如果我们去掉有多少个人喜欢什么东西的条件,那么这个题就直接枚举有 \(i\) 组同学会一起讨论蔡徐坤.这一个问题十分容易. ...

  4. @Async异步方法对异常的处理,从内层向外层抛出机制

    @Async异步方法对异常的处理,从内层向外层抛出机制 @RequestMapping(value = "/test", method = RequestMethod.GET) p ...

  5. C# 设置PDF表单不可编辑、或提取PDF表单数据

    PDF表单是PDF中的可编辑区域,允许用户填写指定信息.当表单填写完成后,有时候我们可能需要将其设置为不可编辑,以保护表单内容的完整性和可靠性.或者需要从PDF表单中提取数据以便后续处理或分析. 之前 ...

  6. MySQL常见的后端面试题,你会几道?

    为什么分库分表 单表数据量过大,会出现慢查询,所以需要水平分表 可以把低频.高频的字段分开为多个表,低频的表作为附加表,且逻辑更加清晰,性能更优 随着系统的业务模块的增多,放到单库会增加其复杂度,逻辑 ...

  7. Atcoder Beginner Contest 324 F Beautiful Path 题解-分数规划

    为了更好的阅读体验,请点击这里 分数规划小技巧:尽可能将式子写成存在某种取值,使得不等式成立的形式. 不然可能需要绕几个弯才能想出来. 题目链接 题目大意:给出一个 DAG,每条边有一个 \(b_i, ...

  8. 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(2)

    1.问题描述: 怎么判断登录的华为帐号有变动? 解决方案: 华为帐号登录成功后会返回唯一标识OpenID和UnionID,如果切换不同的华为帐号登录,这个唯一标识会变. OpenID是华为帐号用户在不 ...

  9. Kafka Stream 以及其他流处理框架对比

    1. Kafka Stream Introduction 假设我们需要对kafka 消息做流数据分析,例如: 对部分消息做过滤 每分钟计算一次收到了多少消息 这种情况下,对于消息过滤以及定时统计,甚至 ...

  10. opengauss Need repair修复

    问题描述:opengauss集群在做切换的时候,或者增删节点的时候,很容易发生节点repair,找不到主库的情况,这种情况需要把主库使用primary角色启动,然后build重建从库,就可以恢复集群 ...