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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

06-Java适配器模式 ( Adapter Pattern )

原型模式 摘要实现范例 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能 举个真实的例子&#xff0c;读卡器是作为内存卡和笔记本之间的适配器。您将内…

2、ChatGPT 在数据科学中的应用

ChatGPT 在数据科学中的应用 ChatGPT 可以成为数据科学家的绝佳工具。以下是我所了解到的关于它擅长的地方和不那么擅长的地方。 我从使用 ChatGPT 中学到了一个教训。它在数据科学中非常有帮助,但你必须仔细检查它输出的所有内容。它非常适合某些任务,并且可以非常快速准确…

Linux Rootkit实验|01 基于修改系统调用表的Hook

Linux Rootkit实验&#xff5c;01 基于修改系统调用表的Hook 文章目录 Linux Rootkit实验&#xff5c;01 基于修改系统调用表的Hook实验说明实验环境实验过程一 基于修改sys_call_table的系统调用挂钩1 寻找sys_call_table内存地址2 关掉写保护3 修改sys_call_table 二 基于系统…

告别mPDF迎来TCPDF和中文打印遇到的问题

mPDF是一个用PHP编写的开源PDF生成库。它最初由Claus Holler创建&#xff0c;于2004年发布。原来用开源软件打印中文没有问题&#xff0c;最近发现新的软件包中mPDF被TCPDF代替了&#xff0c;当然如果只用西文的PDF是没有发现问题&#xff0c;但要打印中文就有点抓瞎了如图1&am…

【python数据分析基础】—dataframe中index的相关操作(添加、修改index的列名、修改index索引值等)

文章目录 前言一、添加、修改index的列名二、修改index索引值 前言 本文主要讲dataframe结构中index的相关操作&#xff0c;index相当于是数据表的行。 一、添加、修改index的列名 新建一个dataframe表&#xff0c;我们可以自定义index的值&#xff0c;如下&#xff1a; imp…

数据结构高级算法

目录 最小生成树 Kruskal(克鲁斯卡尔)(以边为核心) 9) 不相交集合(并查集合) 基础 Union By Size 图-相关题目 4.2 Greedy Algorithm 1) 贪心例子 Dijkstra Prim Kruskal 最优解(零钱兑换)- 穷举法 Leetcode 322 最优解(零钱兑换)- 贪心法 Leetcode 322 3)…

html5 audio video

DOMException: play() failed because the user didn‘t interact with the document first.-CSDN博客 不可用&#xff1a; 可用&#xff1a; Google Chrome Close AutoUpdate-CSDN博客

基于CNN+LSTM深度学习网络的时间序列预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 卷积神经网络&#xff08;CNN&#xff09; 4.2 长短时记忆网络&#xff08;LSTM&#xff09; 4.3 CNNLSTM网络结构 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MA…

2020年通信工程师初级 综合能力 真题

文章目录 第1章 通信职业道德&#xff0c;1-4第2章 法律法规&#xff0c;5-16第3章 计算机应用基础&#xff0c;第5章 现代通信网&#xff0c;38英语题&#xff0c;91 第1章 通信职业道德&#xff0c;1-4 1、职业道德在形式上具有()特点。 A.一致性 B.统一性 C.多样性 D.一般性…

PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG

这里写自定义目录标题 背景JAVA代码解决思路PHP解密 背景 公司PHP开发对接一个Java项目接口&#xff0c;接口返回数据有用DESede/ECB/PKCS5Padding加密&#xff0c;并且key也使用了SHA1PRNG加密了&#xff0c;网上找了各种办法都不能解密&#xff0c;耗了一两天的时间&#xf…

【UE】游戏运行流程的简单理解

流程图 官方的游戏流程图&#xff1a; 一般顺序为初始化引擎、创建并初始化 GameInstance、加载关卡&#xff0c;最后开始游戏。 总的来说就是&#xff1a; 开始游戏-》游戏实例-》关卡-》游戏模式-》玩家控制器-》Pawn、玩家状态、HUD、UMG&#xff08;可有可无&#xff09; …

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示&#xff1a;“java: 程序包org.junit不存在”&#xff0c;针对这一问题&#xff0c;我们可以考虑以下三步来解决&#xff1a; 第一步&#xff1a;检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖&#xff0c;但仍需检查…

postman 文档、导出json脚本 导出响应数据 response ,showdoc导入postman json脚本 导出为文档word或markdown

保存、补全尽可能多的数据、描述 保存响应数据 Response&#xff1a;&#xff08;如果导出接口数据&#xff0c;会同步导出响应数据&#xff09; 请求接口后&#xff0c;点击下方 Save as Example 可以保存响应数据到本地&#xff08;会在左侧接口下新增一个e.g. 文件用来保…

仅一个月获推荐170w+,视频号近期爆火的秘诀是什么?

为了保证良好的创作环境&#xff0c;视频号的原创标准在1月做了新调整&#xff0c; 视频时长小于5秒则不能声明为原创 &#xff0c;纯图片轮播也不能声明为原创&#xff0c;只有持续输出优质内容的账号才能显示原创标识及原创保护功能&#xff0c;这样的改动也给了不少创作者…

基于Vue的移动端UI框架整理

一、Vant 官方地址&#xff1a;https://youzan.github.io/vant/#/zh-CN/ 简介&#xff1a;有赞公司开发。 特性&#xff1a;60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

Redis 命令大全

文章目录 启动与连接Key&#xff08;键&#xff09;相关命令String&#xff08;字符串&#xff09;Hash&#xff08;哈希&#xff09;List&#xff08;列表&#xff09;Set&#xff08;集合&#xff09;Sorted Set&#xff08;有序集合&#xff09;其他常见命令HyperLogLog&…

Unity类银河恶魔城学习记录3-1 EnemyStateMachine源代码 P47

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Enemy.cs using System.Collections; using System.Collections.Generic;…

Java 学习和实践笔记(1)

2024年&#xff0c;决定好好学习计算机语言Java. B站上选了这个课程&#xff1a;【整整300集】浙大大佬160小时讲完的Java教程&#xff08;学习路线Java笔记&#xff09;零基础&#xff0c;就从今天开始学吧。 在这些语言中&#xff0c;C语言是最基础的语言&#xff0c;绝大多…

抢 React 饭碗!如何在 Vue3 中使用 JSX TSX

首先&#xff0c;恭喜一下 React&#xff0c;再过 4 个月&#xff0c;就达成了两年无更新记录 反观隔壁的 Vue&#xff0c;稳定迭代更新 之前写 React 的时候&#xff0c;最喜欢的是 JSX/TSX 语法&#xff0c;把 HTML 组件当做 JavaScript/TypeScript 代码片段处理 const Ap…

数学建模:数据相关性分析(Pearson和 Spearman相关系数)含python实现

相关性分析是一种用于衡量两个或多个变量之间关系密切程度的方法。相关性分析通常用于探索变量之间的关系&#xff0c;以及预测一个变量如何随着另一个变量的变化而变化。在数学建模中&#xff0c;这是常用的数据分析手段。   相关性分析的结果通常用相关系数来表示&#xff…