Web课程学习笔记--CSS选择器的分类

CSS 选择器的分类

基本规则

通过 CSS 可以向文档中的一组元素类型应用某些规则

利用 CSS,可以创建易于修改和编辑的规则,且能很容易地将其应用到定义的所有文本元素

规则结构

每个规则都有两个基本部分:选择器和声明块;声明块由一个或多个声明组成;每个声明则是一个属性-值对

每个样式表由一系列规则组成

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如规则左边所示,选择器定义了将影响文档中的哪些部分

规则右边包含声明块,它由一个或多个声明组成。每个声明是一个 CSS 属性和该属性的值的组合

元素选择器

最常见的选择器往往是 HTML 元素。文档的元素就是最基本的选择器

声明和关键字

声明块包含一个或多个声明。声明总有如下格式:一个属性后面跟一个冒号,再后面是一个值,然后是一个分号。冒号和分号后面可以有0个或多个空格

如果一个属性的值可以取多个关键字,在这种情况下,关键字通常由空格分隔。并不是所偶属性都能接受多个关键字,不过确实有许多属性是这样

p {font: medium Helvetica;}

选择器

通配选择器

CSS2引入了一种新的简单选择器,称为通配选择器(universal selector),显示为一个星号(*)。这个选择器可以与任何元素匹配,就像是一个通配符

* {color: red;}

类选择器

要应用样式而不考虑具体涉及的元素,最常用的方法就是使用类选择器。在使用类选择器之前,需要修改具体的文档标记,以便选择器正常工作

为了将一个类选择器的样式与元素关联,必须将 class 属性指定为一个适当的值

*.warning {font-weight: bold;}
p.warning {font-weight: bold;}
.warning {font-weight: bold;}
多类选择器
.warning {font-weight: bold;}
.urgent {font-style: italic;}
.warning.urgent {background: silver;}

ID 选择器

ID 选择器前面有一个 # 号

ID 选择器不引用 class 属性的值

在一个 HTML 文档中,ID 选择器会使用一次,且仅一次

*#first-para {font-weight: bold;}
#first-para {font-weight: bold;}

属性选择器

在某些标记语言中,不能使用类和 ID 选择器。为了解决这个问题,CSS2引入了属性选择器(attribute selector),它可以根据元素的属性及属性值来选择元素

简单属性选择

如果希望选择某个属性的元素,而不讨论该属性的值是什么,可以使用一个简单属性选择器

<h1 class="hoopla">Hello</h1>
<h1 class="severe">Serenity</h1>
<h1 class="fancy">Fooling</h1>
h1[class] {color: silver;}
img[alt] {border: 3px solid red;} /*对所有带有 alt 属性的图像应用样式*/
*[title] {font-weight: bold;} /*包含标题(title)信息的所有元素变为粗体显示*/
根据具体属性值选择

除了选择有某些属性的元素,还可以进一步缩小选择范围,只选择有特定属性值的元素

/*将指向 Web 服务器上某个特定超链接变成粗体*/
a[href="https://blog.maplemark.cn"] {font-weight: bold;}
<planet>Venus</planet>
<planet moons="1">Earth</planet>
<planet moons="2">Mars</planet>
/*将第二个元素文本变成粗体*/
planet[moons="1"] {font-weight: bold;
}
根据部分属性值选择

如果属性能接受词列表(词之间用空格分隔),可以根据其中的任意一个词进行选择

img[title~="Figure"] {border: 1px solid gray;}
  • 子串匹配属性选择器
类型描述
[foo^=“bar”]选择 foo 属性值以"bar"开头的所有元素
[foo$=“bar”]选择 foo 属性值以"bar"结尾的所有元素
[foo*=“bar”]选择 foo 属性值中包含子串"bar"的所有元素
特定属性选择类型
<h1 lang="en">Hello!</h1>
<p lang="en-us">Greetings!</p>
<div lang="en-au">G'day!</div>
<p lang="fr">Bonjour!</p>
<h4 lang="cy-en">Jrooana!</h4>
*[lang|="en"] {color: white;}

这种属性选择器最常见的用途是匹配语言值

后代选择器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过文档树结构,可以很形象的理解什么是后代选择器(descendant selector),也称为包含选择器/上下文选择器。定义后代选择器就是来创建一些规则,它们仅在某些结构中起作用,而在另外一些结构中不起作用

<div class="row"><p>文字一</p></div>
<div class="row"><div><p>文字一后代</p></div></div>
<div class="row">文字二</div>
<p>文字三</p>
.row p{color: red;}
选择子元素

在某些情况下,可能并不想选择一个任意的后代元素;而是希望缩小范围,只选择另一个元素的子元素

.row > p{color: red;}
选择相邻兄弟元素
<ol><li>List item 1</li><li>List item 1</li><li>List item 1</li><li>List item 1</li>
</ol>
<ul><li>A list item</li><li>Another list item</li><li>Yet Another list item</li><li>Lat list item</li>
</ul>
ol + ul {font-weight: bold;} /*将命中 ul*/

ul 必须紧跟在 ol 后面

伪类选择器

锚类型称为伪类

链接伪类

CSS2.1定义了两个只应用于超链接的伪类

伪类名描述
:link指示作为超链接并指向一个未访问地址的所有锚
:visited指示作为已访问超链接的所有锚
a {color: black;}
a:link {color: bule;}
a:visited {color: red;}
动态伪类

CSS2.1定义了3个动态伪类,它们可以根据用户行为改变文档的外观

伪类名描述
:focus指示当前拥有输入焦点的元素
:hover指示鼠标指针停留在哪个元素上
:active指示被用户输入激活的元素

伪类顺序:link-visited-focus-hover-active

选择第一个子元素

可以使用静态伪类:first-child 来选择元素的第一个子元素

p:first-child {font-weight: bold;}

伪元素选择器

就像伪类为锚指定幻像类一样,伪元素能够在文档中插入假象的元素,从而得到某种效果。CSS2.1中定义了4个伪元素:设置首字母样式、设置第一行样式、设置之前和之后元素的样式

设置首字母样式
p:first-letter {color: red;}
设置第一行样式
p:first-line {color: purple;}
:first-letter 和 :first-line 的限制

在 CSS2 中,:first-letter 和:first-line 伪元素只能应用于标记或段落之类的块级元素,而不能应用于超链接等的行内元素

设置之前和之后元素的样式
p:before {color: black;}
p:after {color: red;}
设置第一行样式
p:first-line {color: purple;}
:first-letter 和 :first-line 的限制

在 CSS2 中,:first-letter 和:first-line 伪元素只能应用于标记或段落之类的块级元素,而不能应用于超链接等的行内元素

设置之前和之后元素的样式
p:before {color: black;}
p:after {color: red;}

《CSS选择器的分类》原文链接:https://blog.maplemark.cn/2019/04/css选择器的分类.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法:最小循环子数组

一、算法描述 给定一个由若干整数组成的数组nums&#xff0c;请检查数组是否是由某个子数组重复循环拼接而成&#xff0c;请输出这个最小的子数组。 输入描述 第一行输入数组中元素个数n&#xff0c;1 < n < 100000 第二行输入数组的数字序列nums&#xff0c;以空格分割&…

JVM性能调优 - 服务器性能排查(7)

在排查生产环境的性能问题时,以下是一些常见的步骤和技巧: 监控系统资源:使用系统监控工具(如top、htop、nmon等)来监控服务器的CPU使用率、内存使用率、磁盘IO等系统资源情况。这可以帮助你了解系统的整体负载情况,是否存在资源瓶颈。 分析日志:查看应用程序的日志文件…

Docker安装ElasticSearch/ES 7.10.0

目录 前言安装ElasticSearch/ES安装步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 安装步骤2&#xff1a;拉取ElasticSearch镜像1 拉取镜像2 查看已拉取的镜像 安装步骤3&#xff1a;创建容器创建容器方…

【Rust】字符串,看这篇就够了

这节课我们把字符串单独拿出来讲&#xff0c;是因为字符串太常见了&#xff0c;甚至有些应用的主要工作就是处理字符串。比如 Web 开发、解析器等。而 Rust 里的字符串内容相比于其他语言来说还要多一些。是否熟练掌握 Rust 的字符串的使用&#xff0c;对 Rust 代码开发效率有很…

基于OpenCV灰度图像转GCode的单向扫描实现

基于OpenCV灰度图像转GCode的单向扫描实现 引言单向扫描存在的问题灰度图像单向扫描代码示例结论 系列文章 ⭐深入理解G0和G1指令&#xff1a;C中的实现与激光雕刻应用⭐基于二值化图像转GCode的单向扫描实现⭐基于二值化图像转GCode的双向扫描实现⭐基于二值化图像转GCode的…

安装newman显示required node version >=16解决办法

直接安装对应版本就行&#xff0c;我的Node.js是14.16.0的版本&#xff0c;newman安装5.2.2的就不会出错。 npm install -g newman5.2.2

linux centos安装neofetch

简介 neofetch是一个命令行工具&#xff0c;可以用来显示系统的基本信息和硬件配置。它支持多种操作系统&#xff0c;包括Linux、macOS和Windows等。 安装 增加yum源 curl -o /etc/yum.repos.d/konimex-neofetch-epel-7.repo https://copr.fedorainfracloud.org/coprs/konime…

WebSocket相关问题

1.WebSocket是什么&#xff1f;和HTTP的区别&#xff1f; WebSocket是一种基于TCP连接的全双工通信协议&#xff0c;客户端和服务器仅需要一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并且支持双向数据的传输。WebSocket和HTTP都是基于TCP的应用层协议&am…

【pikachu csrf】

cxrf 个人理解getPOST 个人理解 当被攻击用户登陆访问网站时&#xff0c;在保持登陆状态时点击小黑子&#xff08;黑客&#xff09;搭建的恶意链接而导致用户受到攻击。 举个例子 我去攻击网站&#xff0c;但是我找不到漏洞&#xff0c;这个时候我注册一个账号&#xff0c;发现…

数据分析基础之《pandas(5)—文件读取与存储》

一、概述 1、我们的数据大部分存在于文件当中&#xff0c;所以pandas会支持复杂的IO操作&#xff0c;pandas的API支持众多文件格式&#xff0c;如CSV、SQL、XLS、JSON、HDF5 二、CSV 1、读取csv文件 read_csv(filepath_or_buffer, sep,, delimiterNone) 说明&#xff1a; fi…

vmware网络配置,VMware的三种网络模式详解与配置

vmware为我们提供了三种网络工作模式 vmware为我们提供了三种网络工作模式, 它们分别是: Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;。 VMware虚拟机的三种网络类型的适用场景如下…

【防止重复提交】Redis + AOP + 注解的方式实现分布式锁

文章目录 工作原理需求实现1&#xff09;自定义防重复提交注解2&#xff09;定义防重复提交AOP切面3&#xff09;RedisLock 工具类4&#xff09;过滤器 请求工具类5&#xff09;测试Controller6&#xff09;测试结果 工作原理 分布式环境下&#xff0c;可能会遇到用户对某个接…

【资料分享】基于单片机大气压监测报警系统电路方案设计、基于飞思卡尔的无人坚守点滴监控自动控制系统设计(程序,原理图,pcb,文档)

基于单片机大气压监测报警系统电路方案设计 功能&#xff1a;实现的是大气压检测报警系统&#xff0c;可以通过传感器实时检测当前大气压值&#xff0c;可以设定大气压正常范围&#xff0c;当超过设定范围进行报警提示。 资料&#xff1a;protues仿真&#xff0c;程序&#x…

从头开始构建和训练 Transformer(下)

导 读 上一篇推文从头开始构建和训练 Transformer&#xff08;上&#xff09;https://blog.csdn.net/weixin_46287760/article/details/136048418介绍了构建和训练Transformer的过程和构建每个组件的代码示例。本文将使用数据对该架构进行代码演示&#xff0c;验证其模型性能。…

2-1 动手学深度学习v2-Softmax回归-笔记

回归 VS 分类 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出输出的区间&#xff1a;自然区间 R \mathbb{R} R损失&#xff1a;跟真实值的区别 分类 通常多个输出&#xff08;这个输出的个数是等于类别的个数&#xff09;输出的第 i i i…

MATLAB知识点:矩阵的除法

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.4.2 算术运算 下面我们再来介绍矩阵的除法。事…

企业数字化转型面临什么挑战?

数字化转型是一个复杂且持续的过程&#xff0c;涉及将数字技术集成到组织的各个方面&#xff0c;从根本上改变组织的运营方式和为客户提供价值的方式。虽然具体的挑战可能因企业的性质和规模而异&#xff0c;但一些常见的挑战包括&#xff1a; 1.抵制变革&#xff1a; 文化阻…

Java入门之JavaSe(韩顺平p1-p?)

学习背景&#xff1a; 本科搞过一段ACM、研究生搞了一篇B会后&#xff0c;本人在研二要学Java找工作啦~~&#xff08;宇宙尽头是Java&#xff1f;&#xff09;爪洼纯小白入门&#xff0c;C只会STL、python只会基础Pytorch、golang参与了一个Web后端项目&#xff0c;可以说项目小…

Flink-CDC实时读Postgresql数据

前言 CDC,Change Data Capture,变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。 用户可以在如下的场景使用cdc: 实时数据同步:比如将Postgresql库中的数据同步到我们的数仓中…

Python初学者学习记录——python基础综合案例:数据可视化——动态柱状图

一、案例效果 通过pyecharts可以实现数据的动态显示&#xff0c;直观的感受1960~2019年世界各国GDP的变化趋势 二、通过Bar构建基础柱状图 反转x轴和y轴 标签数值在右侧 from pyecharts.charts import Bar from pyecharts.options import LabelOpts# 构建柱状图对象 bar Bar()…