第二章:CSS的复合选择器

news/2025/1/21 6:22:31/
htmledit_views">

目录

一、并集选择器

二、交集选择器

三、后代选择器

四、子代选择器

五、兄弟选择器

六、属性选择器

七、伪类选择器

1.动态伪类

2.结构伪类

3.否定伪类

4.UI伪类

5.目标伪类

 6.语言伪类

八、伪元素选择器

九、选择器的优先级

十、总结


一、并集选择器

同时选择多个选择器,并给它们添加相同的样式,使用逗号(,)隔开。

html" title=css>css">.cat,
.pig,
.cattle,
.dog{font-size: 80px;background-color: red;width: 400px;
}

二、交集选择器

选出同时具有多个特征的元素,使用交集选择器,不需要任何符号(包括空格),所有选择器均可交集。

html" title=css>css">        /* 即时p标签又是beauty类的交集 */p.beauty{color: green;}/* 类的交集,既是no-beauty又是cute */.no-beauty.cute{color: blue;}

三、后代选择器

HTML元素之间的嵌套和并列使它们之间建立了父子,兄弟等关系,可以通过这些关系锁定要找的元素。后代之间使用空格间隔,可以跳级选择。

html" title=css>css">        ul li a{color: orange;}ol li a{color: pink;}

四、子代选择器

子代选择器只能选出最直接的后代,所以必须是亲儿子,直接嵌套的,孙子都不行,使用大于号(>)连接。

html" title=css>css">        div>a{color: red;}div>p>a{color: green;}

五、兄弟选择器

兄弟选择器有两种:相邻兄弟选择器和通配兄弟选择器。

相邻兄弟选择器只能选出一个离它最近的兄弟,由于代码是从上往下编译的,所以兄弟只能是往下的兄弟,之前的无法选中,使用加号(+)连接。

html" title=css>css">/* 相邻兄弟选择器与div最近的p元素,且是往下看 */div+p {color: red;}

通配兄弟选择器可以选出所有的兄弟,但是也只能往下看,使用(~)连接。

html" title=css>css">/* 通配兄弟选择器:所有的兄弟均选择(也是只能往下看) */div~p {color: green;}

六、属性选择器

可以选出具有某个属性的元素,使用中括号([])包裹,具体使用有五种情况,使用方法如下:

html" title=css>css">        /* 具有title属性即可被选中,无论里面的值 */[title]{color: red;}/* 要求title的值为222 */[title="222"]{color: green;}/* 选择title属性以a开头的元素 */[title^="a"]{color: blue;}/* 选择title属性以4结尾的元素 */[title$="4"]{color: chocolate;}/* 选中title属性且属性值中有1的元素,有即可 */[title*="1"]{color: gold;}

七、伪类选择器

伪类:很像类,但不是class,用冒号表示,选出具有一定特征的元素,但这些特征不是类。

1.动态伪类

选择具有一定动态特征的元素,比如鼠标悬浮,有没有被访问过,有无焦点等等。

具体见代码:

html" title=css>css">        /* 没有访问过的是橙色 */a:link {color: orange;}/* 访问过的是棕色 */a:visited {color: brown;}/* 选中的是鼠标悬浮状态的a元素,激活状态是指鼠标左键按住的时候为激活状态 */a:hover {color: skyblue;}/* 选中激活状态的a元素 */a:active {color: green;}/* 输入框和下拉框获得焦点是字体是橙色,背景是绿色 */input:focus,select:focus {color: orange;background-color: green;}

2.结构伪类

结构伪类是通过元素在HTML中的相对位置来选出元素,比如first-child表示第一该元素,last-child表示最后一个该元素,nth-child(n)表示第n个该元素,更多见代码:

html" title=css>css">        /* 选中的是第一个儿子p元素 */div>p:first-child {color: red;}/* 选中最后一个儿子 */div>p:last-child {color: red;}/* 选中第n个儿子p元素 ,括号内可以是公式,必须是一次函数an+b的形式*/div>p:nth-child(2n) {color: red;}/* 所有同类型的兄弟排序,并选择第一个 */div>p:first-of-type {color: red;}/* 倒数写法,中间加上last */div>p:nth-last-child(2) {color: red;}/* 同理 */div>p:nth-last-of-type(2) {color: green;}/* 选中的是没有兄弟的span元素 */span:only-child {color: red;}

注意:1.同类型的兄弟指前面的限定条件所选出来的特定元素,其顺序不受其他类型元素的影响,而nth-child(n)指的是父元素的第n个儿子。当父元素下的子元素都是一种类型,两者是一样的。2.括号里面的公式只能是一次函数,an+b,即使是1-n,也要写为-n+1。

3.否定伪类

使用关键字not()来否定,即除了括号类的,均选中。示例:

html" title=css>css">        /* 选中没有fail属性的元素 */div>p:not(.fail) {color: red;}

4.UI伪类

主要是针对表单元素,比如选出已勾选的单选框,复选框,被禁用的input元素等,示例:

html" title=css>css">        /* 选中的是勾选的复选框或单选框 */input:checked{width: 100px;height: 100px;}/* 选中的是被禁用的input元素 */input:disabled{background-color: gray;}/* 选中的是可用的input */input:enabled{background-color: green;}

5.目标伪类

选中用户主动选定的目标(target),示例(效果:通过锚点跳转,UI选择器选出跳转的元素,背景改为绿色):

html"><!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>目标伪类</title><style>div{background-color: grey;height: 300px;}div:target{background-color: green;}</style>
</head>
<body><a href="#one">去看第1个</a><a href="#two">去看第2个</a><a href="#three">去看第3个</a><a href="#four">去看第4个</a><a href="#five">去看第5个</a><a href="#six">去看第6个</a><div id="one">第1个</div><br><div id="two">第2个</div><br><div id="three">第3个</div><br><div id="four">第4个</div><br><div id="five">第5个</div><br><div id="six">第6个</div><br>
</body>
</html>

 6.语言伪类

通过lang()关键字,选出指定语言的元素,示例:

html" title=css>css">        div:lang(en){color: red;}:lang(zh-CN){color: green;}

八、伪元素选择器

可以选中某个元素中的某一部分,比如一个元素的第一个字,第一行,选中部分等等。示例:

html" title=css>css">        /* 第一个字 */div::first-letter {color: red;font-size: 40px;}/* 第一行 */div::first-line {background-color: yellow;}/* 被选中的部分 */div::selection {background-color: green;color: orange;}/* 输入框里的默认文字 */input::placeholder {color: skyblue;}/* 元素的前面 */p::before {content: "¥";}/* 元素的后面 */p::after {content: ".00";}

九、选择器的优先级

众多选择器如何,万一冲突了要如何抉择呢?

选择器可以分成三个等级,第一级是id选择器,第二级是类,伪类,属性选择器,第三级是元素,伪元素选择器,他们的个数分别代表了(a,b,c)的三个值,然后比较选择器的优先级就按照(a,b,c)来比较,先看a,再看b,最后看c,直到比较出优先级为止,都一样,就后面覆盖前面。

如果需要提高优先级可以在样式后面加上!important,这是优先级最高的,比行内样式还高。但是要谨慎使用!

十、总结

本章节介绍了CSS的复合选择器,以及选择器的优先级问题,这是CSS和js的基础。下一章将介绍CSS的颜色表示方法。


http://www.ppmy.cn/news/1564873.html

相关文章

分类问题(二元,多元逻辑回归,费歇尔判别分析)spss实操

分类模型&#xff1a; 二分类和多分类&#xff1a; 对于二分类模型 &#xff0c;我们将介绍逻辑回归和Fisher线性判别分析两种分类算法; 对于多分类模型&#xff0c;我们将简单介绍Spss中的多分类线性判别分析和多分类逻辑回归的操作步骤 二分类: 基于广义线性模型&#x…

iOS 性能优化:实战案例分享

摘要&#xff1a; 本文将深入探讨 iOS 性能优化的重要性&#xff0c;并通过一系列实际开发案例&#xff0c;展示如何解决常见的性能问题&#xff0c;包括内存管理、CPU 性能、网络性能、UI 性能和启动性能等方面的优化&#xff0c;帮助 iOS 开发者打造更流畅、高效的应用程序。…

RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式

视频从采集到编码再到线程获取编码后的数据&#xff0c;已经全部说完。接下来继续来说应该比较重要的&#xff0c;和视频相关的。就是码率。 视频码率及其码率控制方式 一、什么是码率&#xff1f; 视频码率是指在单位时间内传输的视频数据量&#xff0c;通常以 kbps&#x…

初识go语言之指针用法

一、环境准备 安装go语言编译环境&#xff0c;官网地址&#xff1a;https://go.dev/dl/ 或者 https://golang.google.cn/dl/ 点击下载按提示安装即可 vscode 安装go语言扩展 测试 package mainimport "fmt"func main() {fmt.Println("Hello, World!") …

Spark 之 Aggregate

Aggregate 参考链接: https://github.com/PZXWHU/SparkSQL-Kernel-Profiling完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式( groupingExpressions )。 聚合查询还支持 OLAP 场景下的多…

uni-app 中使用微信小程序第三方 SDK 及资源汇总

首先在高德开放平台&#xff0c;注册账号并且申请相关的 key 等信息&#xff1b; 然后下载它的微信小程序版 SDK&#xff1a;微信小程序 SDK。 然后填写app包名&#xff0c;申请原生sdk的appkey信息&#xff0c;但不需要下载原生sdk。注意&#xff1a;App侧在Android中使用定位…

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显&#xff0c;发现可以打SSTI 本地起一个服务&#xff0c;折半查找fuzz黑名单&#xff0c;不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…

Kivy App开发之UX控件TabbedPanel选项面板

在开发过程中,可以使用TabbedPannel作为容器,管理选项卡中的不同小控件,分为标题区和内容区,其中标题区域用于显示选项卡按钮,内容区域用于显示当前选项卡的内容。 常用属性如下所示 属性说明content当前选项卡内容的对象,默认为Nonecontent_tab链接到当前选定或活动的选…