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

news2024/11/17 23:39:13

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.coloradmin.cn/o/1435469.html

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

相关文章

Python老司机教你,花几分钟,构建一个Python包

1、前言 构建包的过程有些复杂&#xff0c;但从长远来看是值得的&#xff0c;尤其是可以创建属于自己的Python包。本文的目的是通过对构建一个新发行包的案例研究&#xff0c;让您了解需要构建什么以及如何构建python包的基础知识。 2、开始 首先&#xff0c;您肯定需要设置…

串行线路和静态路由配置

实验大纲 1.构建网络拓扑结构图 2.修改路由器名字 3.查看路由器的串行控制信息 4.配置R1和R2串行接口 5.测试连通性&#xff08;R1 PING R2 & R2 PING R1&#xff09; 6.配置路由器以太网口 7.配置主机信息 8.测试路由器连通性 9.查看路由信息 10.在R1配置静态路…

CentOS基于volatility2的内存取证实验

CentOS&#xff0c;Redhat和Fedora 都是Red Hat体系&#xff0c;采用yum管理器&#xff0c;不同于Debian、Ubuntu作为Debian体系使用apt 本文以CentOS为例&#xff0c;采用avml制作内存镜像&#xff0c;并利用volatility官方所给工具制作profile符号文件&#xff0c;进行简单的…

2024腾讯云游戏服务器租用多少钱一年?

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

[晓理紫]AI专属会议截稿时间订阅

AI专属会议截稿时间订阅 关注{晓理紫}&#xff0c;每日更新最新AI专属会议信息&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持&#xff01;&#xff01; 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新AI专属会议信…

环境配置:Ubuntu18.04 ROS Melodic安装

前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统&#xff0c;其核心代码采用C编写&#xff0c;并以BSD许可发布。ROS起源于2007年&#xff0c;是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年&#xff0c;ROS团队从…

恒创科技:服务器内存不足影响大吗?

​  服务器在为网站、应用程序和在线服务提供支持方面发挥着关键作用。这些服务器需要提供最佳性能&#xff0c;以确保正常无缝的用户体验&#xff0c;而RAM是显著影响服务器性能的关键配置之一。 RAM 是一种随机存取存储器&#xff0c;计算机和服务器使用它来临时存储正在使…

OCR文本纠错思路

文字错误类别&#xff1a;多字 少字 形近字 当前方案 文本纠错思路 简单&#xff1a; 一、构建自定义词典&#xff0c;提高分词正确率。不在词典中&#xff0c;也不是停用词&#xff0c;分成单字的数据极有可能是错字&#xff08;少部分可能是新词&#xff09;。错字与前后的…

机器学习---半监督学习简单示例(标签传播算法)

1. 使用半监督学习方法 Label Spreading 在一个生成的二维数据集上进行标签传播 import numpy as np import matplotlib.pyplot as plt from sklearn.semi_supervised import label_propagation from sklearn.datasets import make_circles# generate ring with inner box n_s…

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

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

飞天使-k8s知识点12-kubernetes散装知识点1-架构有状态资源对象分类

文章目录 k8s架构图有状态和无状态服务 资源和对象对象规约和状态 资源的对象-资源的分类元数据型与集群型资源命名空间 k8s架构图 有状态和无状态服务 区分有状态和无状态服务有利于维护yaml文件 因为配置不同资源和对象 命令行yaml来定义对象对象规约和状态 规约 spec 描述…

时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-GRU-AdaBo…

微软为新闻编辑行业推出 AI 辅助项目,记者参加免费课程

2 月 6 日消息&#xff0c;微软当地时间 5 日发布新闻稿宣布与多家新闻机构展开多项基于生成式 AI 的合作。微软表示&#xff0c;其使命是确保新闻编辑室在今年和未来拥有创新。 目前建议企业通过微软官方合作伙伴获取服务&#xff0c;可以合规、稳定地提供企业用户使用ChatGP…

Leetcode02.05:链表求和

一、题目描述 给定两个用链表表示的整数&#xff0c;每个节点包含一个数位。 这些数位是反向存放的&#xff0c;也就是个位排在链表首部。 编写函数对这两个整数求和&#xff0c;并用链表形式返回结果。 示例&#xff1a; 输入&#xff1a;(7 -> 1 -> 6) (5 -> 9 -…

STM32内部Flash

目录 一、内部Flash简介 二、内部Flash构成 1. 主存储器 2. 系统存储区 3. 选项字节 三、内部Flash写入过程 1. 解锁 2. 页擦除 3. 写入数据 四、工程空间分布 某工程的ROM存储器分布映像&#xff1a; 1. 程序ROM的加载与执行空间 2. ROM空间分布表 一、内部Flash…

1、将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践

将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践 希望将 ChatGPT 集成到您的数据科学工作流程中吗?这是一个利用 ChatGPT 进行数据科学的提示的实践。 ChatGPT、其继任者 GPT-4 及其开源替代品非常成功。开发人员和数据科学家都希望提高工作效率,并使用 ChatGPT 来简…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法&#xff1a;使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

库存扣减如何避免超卖和少卖?

&#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是小徐&#x1f947;☁️博客首页&#xff1a;CSDN主页小徐的博客&#x1f304;每日一句&#xff1a;好学而不勤非真好学者 &#x1f4dc; 欢迎大家关注&#xff01; ❤️ 所谓”超卖"指的就是商品卖多了&#xff0…

N-143基于springboot博客系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;AdminLTEHTML 服务端技术&#xff1a;springbootmybatis-plusthymeleaf 本项目分前台和后台&#xff0c;主要有普…