【Java 进阶篇】CSS 选择器详解

在这里插入图片描述

CSS(层叠样式表)是一种用于描述网页上元素样式的语言。要想有效地使用CSS,了解CSS选择器是至关重要的,因为它们允许你选择要应用样式的HTML元素。在本文中,我们将详细介绍CSS选择器的各种类型和用法,以便你能够更好地掌握这一关键概念。

1. 什么是CSS选择器?

CSS选择器是一种模式,用于选择HTML文档中的一个或多个元素,并为这些元素应用样式。选择器基于元素的标签名称、类、ID、属性等特征来选择元素。通过选择器,你可以精确地定义哪些元素将受到样式的影响。

2. 基本选择器

2.1 标签选择器

标签选择器是最简单的选择器,它通过HTML元素的标签名称来选择元素。例如,要选择所有段落元素 <p> 并将它们的文字颜色设置为红色,可以使用以下样式:

p {color: red;
}

这将使所有段落文本变为红色。

2.2 类选择器

类选择器允许你选择具有特定类名的元素。类选择器以点 . 开头,后面跟随类名。例如,要选择所有具有 button 类的按钮元素,并将它们的背景颜色设置为蓝色,可以使用以下样式:

.button {background-color: blue;
}

2.3 ID选择器

ID选择器允许你选择具有特定ID属性的元素。ID选择器以井号 # 开头,后面跟随ID名称。ID在整个HTML文档中应该是唯一的。例如,要选择具有 header ID的标题元素,并将它们的字体大小设置为24像素,可以使用以下样式:

#header {font-size: 24px;
}

3. 复合选择器

复合选择器允许你组合多个选择器,以便更精确地选择元素。以下是一些常见的复合选择器:

3.1 后代选择器

后代选择器(空格)允许你选择嵌套在其他元素内部的元素。例如,要选择所有在 <div> 元素内部的段落元素,并将它们的文字颜色设置为绿色,可以使用以下样式:

div p {color: green;
}

3.2 子选择器

子选择器(>)允许你选择作为另一个元素的直接子元素的元素。例如,要选择所有 <ul> 元素下的直接子元素 <li> 并将它们的文本颜色设置为橙色,可以使用以下样式:

ul > li {color: orange;
}

3.3 相邻兄弟选择器

相邻兄弟选择器(+)允许你选择与另一个元素相邻的元素。例如,要选择所有紧跟在标题元素 <h2> 后面的段落元素 <p> 并将它们的字体设置为斜体,可以使用以下样式:

h2 + p {font-style: italic;
}

3.4 通用兄弟选择器

通用兄弟选择器(~)允许你选择与另一个元素具有相同父元素的所有元素。例如,要选择所有与标题元素 <h2> 具有相同父元素的段落元素 <p> 并将它们的文字颜色设置为灰色,可以使用以下样式:

h2 ~ p {color: gray;
}

4. 属性选择器

属性选择器允许你选择具有特定属性的元素。属性选择器使用方括号 [],并在方括号内指定要匹配的属性和属性值。以下是一些常见的属性选择器示例:

4.1 属性选择器

属性选择器允许你选择具有特定属性的元素。属性选择器使用方括号 [],并在方括号内指定要匹配的属性和属性值。以下是一些常见的属性选择器示例:

4.1.1 属性存在选择器

属性存在选择器([attribute])用于选择具有指定属性的所有元素,而不考虑其值。例如,要选择所有具有 title 属性的元素,并将它们的背景颜色设置为黄色,可以使用以下样式:

[title] {background-color: yellow;
}
4.1.2 属性值精确匹配选择器

属性值精确匹配选择器([attribute=value])用于选择具有指定属性和精确属性值的元素。例如,要选择所有 type 属性值为 text 的输入框元素,并将它们的边框颜色设置为蓝色,可以使用以下样式:

input[type="text"] {border-color: blue;
}
4.1.3 属性值前缀匹配选择器

属性值前缀匹配选择器([attribute^=value])用于选择具有指定属性且属性值以指定值开头的元素。例如,要选择所有 src 属性值以 https 开头的图片元素,并将它们的边框颜色设置为绿色,可以使用以下样式:

img[src^="https"] {border-color: green;
}
4.1.4 属性值后缀匹配选择器

属性值后缀匹配选择器([attribute$=value])用于选择具有指定属性且属性值以指定值结尾的元素。例如,要选择所有 href 属性值以 .pdf 结尾的链接元素,并将它们的文本颜色设置为红色,可以使用以下样式:

a[href$=".pdf"] {color: red;
}
4.1.5 属性值包含匹配选择器

属性值包含匹配选择器([attribute*=value])用于选择具有指定属性且属性值包含指定值的元素。例如,要选择所有 class 属性值包含 active 的元素,并将它们的背景颜色设置为橙色,可以使用以下样式:

[class*="active"] {background-color: orange;
}

5. 伪类选择器

伪类选择器允许你选择处于特定状态或位置的元素,而不是基于元素的属性或标签名称。以下是一些常见的伪类选择器示例:

5.1 链接伪类选择器

链接伪类选择器用于选择链接元素的不同状态。例如,要选择未被访问的链接并将其颜色设置为蓝色,可以使用以下样式:

a:link {color: blue;
}

同样,你还可以使用 :visited 伪类选择已访问的链接。

5.2 :hover 伪类选择器

:hover 伪类选择器用于选择鼠标悬停在元素上时的状态。例如,要选择鼠标悬停在按钮元素上时,并将其背景颜色设置为浅灰色,可以使用以下样式:

button:hover {background-color: lightgray;
}

5.3 :nth-child 伪类选择器

:nth-child 伪类选择器用于选择一组元素中的第 n 个元素。例如,要选择每个列表中的第偶数个列表项,并将它们的文本颜色设置为绿色,可以使用以下样式:

li:nth-child(even) {color: green;
}

5.4 :not 伪类选择器

:not 伪类选择器用于选择不匹配某一条件的元素。例如,要选择除了具有类名 special 的元素之外的所有段落元素,并将它们的字体颜色设置为蓝色,可以使用以下样式:

p:not(.special) {color: blue;
}

5.5 :first-child 伪类选择器

:first-child 伪类选择器用于选择一组元素中的第一个元素。例如,要选择每个列表中的第一个列表项,并将它们的文本颜色设置为红色,可以使用以下样式:

li:first-child {color: red;
}

6. 伪元素选择器

伪元素选择器允许你选择元素的特定部分,而不是整个元素。以下是一些常见的伪元素选择器示例:

6.1 ::before 和 ::after 伪元素选择器

::before 和 ::after 伪元素选择器用于在元素的内容之前或之后插入虚拟的元素。这些虚拟元素可以用来添加装饰性内容。例如,要在每个段落之前添加一个引号图标,可以使用以下样式:

p::before {content: "\201C"; /* Unicode编码表示左双引号 */
}

6.2 ::first-letter 伪元素选择器

::first-letter 伪元素选择器用于选择元素的第一个字母或字符。例如,要选择每个段落的第一个字母并将其设置为大写,可以使用以下样式:

p::first-letter {text-transform: uppercase;
}

6.3 ::first-line 伪元素选择器

::first-line 伪元素选择器用于选择元素的第一行文本。例如,要选择每个段落的第一行文本并将其设置为斜体,可以使用以下样式:

p::first-line {font-style: italic;
}

7. 结合选择器

你可以结合多个选择器来更精确地选择元素。这是一些常见的结合选择器的示例:

7.1 选择多个类名

如果一个元素具有多个类名,你可以将它们组合在一起选择。例如,要选择具有 btnprimary 两个类名的按钮元素,并将其背景颜色设置为蓝色,可以使用以下样式:

.button.primary {background-color: blue;
}

7.2 选择特定标签下的元素

你可以结合标签选择器和类选择器来选择特定标签下的元素。例如,要选择 <div> 元素内部的具有 info 类名的段落元素,并将其文字颜色设置为绿色,可以使用以下样式:

div .info {color: green;
}

7.3 复杂的选择器组合

你可以结合多个选择器来创建更复杂的选择器组合。例如,要选择具有 main ID 的 <div> 元素内部的所有直接子元素 <p>,并将它们的字体颜色设置为蓝色,可以使用以下样式:

div#main > p {color: blue;
}

8. 总结

CSS选择器是CSS中非常重要的概念,它们允许你选择要应用样式的HTML元素。本文介绍了各种类型的选择器,包括基本选择器、复合选择器、属性选择器、伪类选择器和伪元素选择器,以及如何结合它们来更精确地选择元素。通过深入了解这些选择器,你将能够更好地掌握CSS并创建精美的网页布局和样式。希望这篇文章对你有所帮助!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

【每日一记】OSPF区域划分详讲、划分区域的优点好处

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;喜欢编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

3d环形图开发(vue3+vite+ts)

开发效果&#xff08;待完善&#xff09;&#xff1a; 技术支持&#xff1a; Echarts echarts-gl 安装&#xff1a; 注&#xff1a;echarts与echarts-gl版本需对应&#xff0c;可参考官网 pnpm add echarts4.9.0 echarts-gl1.1.2 组件封装&#xff1a; <template><…

归纳所猜半结论推出完整结论:CF1592F1

https://www.luogu.com.cn/problem/CF1592F1 场上猜了个结论&#xff0c;感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作&#xff0c;被#14hack了。然后就猜4操作只会进行一次&#xff0c;然后就不知道怎么做下去了。 上面猜的结论都…

dockerfile lnmp 搭建wordpress、docker-compose搭建wordpress

-----------------安装 Docker--------------------------- 目前 Docker 只能支持 64 位系统。systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 --------------------------------------------------…

第 366 场周赛 LeetCode 周赛题解

A 分类求和并作差 模拟 class Solution { public:int differenceOfSums(int n, int m) {int res 0;for (int i 1; i < n; i)res i % m ! 0 ? i : -i;return res;} };B 最小处理时间 排序&#xff1a;设四个 p r o c e s s o r T i m e processorTime processorTime 的元…

JavaScript 解决dayjs在周日获取当前周第一天显示下一周第一天问题

原因&#xff1a;默认情况下&#xff0c;Day.js 将星期天视为每周的第一天。 方法&#xff1a;判断当天是不是周日&#xff0c;如果是就减一周。 import dayjs from dayjs const weekday dayjs().day() const we weekday 0 ? 0 - 1 : 0 // dayjs().add(7, day)、da…

配置Hive使用Spark执行引擎

配置Hive使用Spark执行引擎 Hive引擎概述兼容问题安装SparkSpark配置Hive配置HDFS上传Spark的jar包执行测试速度对比 Hive引擎 概述 在Hive中&#xff0c;可以通过配置来指定使用不同的执行引擎。Hive执行引擎包括&#xff1a;默认MR、tez、spark MapReduce引擎&#xff1a; 早…

JRebel在IDEA中实现热部署 (JRebel实用版)

JRebel简介&#xff1a; JRebel是与应用程序服务器集成的JVM Java代理&#xff0c;可使用现有的类加载器重新加载类。只有更改的类会重新编译并立即重新加载到正在运行的应用程序中&#xff0c;JRebel特别不依赖任何IDE或开发工具&#xff08;除编译器外&#xff09;。但是&…

bert入门

bert是什么 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种自然语言处理&#xff08;NLP&#xff09;中的预训练模型&#xff0c;它是基于Transformer架构的一种深度学习模型。BERT的主要目标是在大规模文本语料库上进行预训练&a…

Maven 自动化构建

自动化构建定义了这样一种场景: 在一个项目成功构建完成后&#xff0c;其相关的依赖工程即开始构建&#xff0c;这样可以保证其依赖项目的稳定。 比如一个团队正在开发一个项目 bus-core-api&#xff0c; 并且有其他两个项目 app-web-ui 和 app-desktop-ui 依赖于这个项目。 …

【安鸾靶场】cmseasy内网渗透 (500分)

文章目录 题目一、渗透开始后台执行rce漏洞内网横向 题目 一、渗透开始 上burp后没有报漏洞&#xff1a; /admin存在后台&#xff1a; 爆破一下&#xff1a; admin admin123 后台执行rce漏洞 POC&#xff1a; 1111111111";}<?php phpinfo()?> 触发漏洞&#xf…

【Unity ShaderGraph】| 如何快速制作一个炫酷 模型裁剪效果 实战

前言 【Unity ShaderGraph】| 如何快速制作一个炫酷 模型裁剪效果 实战一、效果展示二、简易裁剪效果三、进阶裁剪效果四、应用实例 前言 本文将使用Unity 的ShaderGraph制作一个模型裁剪的效果&#xff0c;可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇…