【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.mzph.cn/news/100455.shtml

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

相关文章

Vue中使用Echarts封装为公用组件(简单复制粘贴)

Vue中封装Echarts组件 前提直奔主题 本文以Vue3代码演示 Vue2同理 前提 中文官网&#xff1a; https://echarts.apache.org/zh/index.html npm安装Echarts npm install echarts or pnpm install echarts or yarn add echarts直奔主题 创建Echarts.vue文件&#xff0c;代码如…

Solidity 合约漏洞,价值 38BNB 漏洞分析

Solidity 合约漏洞&#xff0c;价值 38BNB 漏洞分析 1. 漏洞简介 https://twitter.com/NumenAlert/status/1626447469361102850 https://twitter.com/bbbb/status/1626392605264351235 2. 相关地址或交易 攻击交易&#xff1a; https://bscscan.com/tx/0x146586f05a451313…

Unity官方文档中关于内存管理的翻译(2021.3)

原文:Memory in Unity - Unity 手册 Unity内存管理 为了确保您的应用程序运行时没有性能问题&#xff0c;了解Unity如何使用和分配内存非常重要。本文档的这一部分解释了Unity中内存是如何工作的&#xff0c;适用于希望了解如何提高应用程序内存性能的读者。 Unity使用三个内…

视频答题猜歌闯关娱乐微信小程序源码支持看视频答题闯关听歌猜歌答题流量主模式(团队奖励等)

功能强大UI美观的视频答题猜歌闯关娱乐微信小程序源码下载 后台管理资源本地化带数据和视频教程&#xff0c;这是一款拥有后端的闯关娱乐小程序。 支持个人小程序和企业小程序上线运营 功能强大齐全,带数据本地化 (数据在自己服务器自己管理无需担心第三方失效的问题) 支持看视…

【重拾C语言】七、指针(二)指针与数组(用指针标识数组、多维数组与指针、数组指针与指针数组)

目录 前言 七、指针 7.1~3 指针与变量、指针操作、指向指针的指针 7.4 指针与数组 7.4.1 用指针标识数组 7.4.2 应注意的问题 a. 数组名是指针常量 b. 指针变量的当前值 c. 数组超界 7.4.3 多维数组与指针 7.4.4 指针数组 a. 指针数组 b. 数组指针 c. 对比总结 前…

Reactor网络模式

文章目录 1. 关于Reactor模式的了解2. 基于Reactor模式实现epoll ET服务器2.1 EventItem类的实现2.2 Reactor类的实现Dispatcher函数AddEvent函数DelEvent函数EnableReadWrite函数 2.3 四个回调函数的实现acceptor回调函数recver回调函数sender回调函数errorer回调函数 3. epol…

突破封锁|华为芯片10年进化史:从K3V1到麒麟9000S

华为海思麒麟芯片过去10年研发历程回顾如下&#xff1a; 2009年&#xff1a;华为推出第一款手机芯片K3V1&#xff0c;采用65nm工艺制程&#xff0c;基于ARM11架构&#xff0c;主频600MHz&#xff0c;支持WCDMA/GSM双模网络。这款芯片搭载在华为U8800手机上&#xff0c;标志着华…

在SOLIDWORKS搭建一个简易的履带式机器人

文章目录 前言一、构建模型基本单元二、搭建车体模块三.插入轮子4.构建履带 前言 趁着十一假期&#xff0c;在solidworks中搭建了一个履带式机器人小车&#xff0c;计划将其应用在gazebo中完成多机器人编队的仿真。 一、构建模型基本单元 构建底板&#xff08;a面&#xff09…

面试总结-Redis篇章(十二)——Redis是单线程的,为什么还那么快

Redis是单线程的&#xff0c;为什么还那么快 Redis是单线程的&#xff0c;为什么还那么快什么是IO多路复用 阻塞IO非阻塞IOIO多路复用 Redis是单线程的&#xff0c;为什么还那么快 Redis是纯内存操作&#xff0c;执行速度非常快采用单线程&#xff0c;避免不必要的上下文切换可…

Python中套接字实现服务端和客户端3-3

3 创建客户端的步骤 创建客户端的步骤如图5所示。 图5 创建客户端的步骤 从图5可以看出&#xff0c;对于客户端来说&#xff0c;首先创建套接字&#xff0c;之后通过创建的套接字去连接服务端&#xff0c;如果连接成功&#xff0c;则继续通过该套接字向服务端发送数据&#x…

【Mybatis源码】IDEA中Mybatis源码环境搭建

一、Mybatis源码源 在github中找到Mybatis源码地址&#xff1a;https://github.com/mybatis/mybatis-3 找到Mybatis git地址 二、IDEA导入Mybatis源码 点击Clone下载Mybatis源码 三、选择Mybatis分支 选择Mybatis分支&#xff0c;这里我选择的是3.4.x分支

【ChatGPT】无需代理使用ChatGPT

推荐一个无需代理、可以直接使用的、免费的、无需客户端的、稳定的ChatGPT终端 支持GPT-3.5和CPT-4 无需境外手机号 该工具比较稳定&#xff0c;断流情况很少 GPTDOS 注册地址&#xff1a;GPTDOS &#xff08;使用我的邀请链接进行注册&#xff0c;双方都可以得到50000个toke…

Vue3 编译原理

文章目录 一、编译流程1. 解读入口文件 packgages/vue/index.ts2. compile函数的运行流程 二、AST 解析器1. ast 的生成2. 创建ast的根节点3. 解析子节点 parseChildren&#xff08;关键&#xff09;4. 解析模版元素 Element模版元素解析-举例分析 一、编译流程 1. 解读入口文…

嵌入式养成计划-33--数据库-sqlite3

七十一、 数据库 71.1 数据库基本概念 数据&#xff08;Data&#xff09; 能够输入计算机并能被计算机程序识别和处理的信息集合数据库 &#xff08;Database&#xff09;数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合 常用的数据库 大型数…

第二证券:5.5G时代将至 算力基建迎政策助力

昨日&#xff0c;A股全线低开&#xff0c;三大股指盘中均跌超1%&#xff0c;盘中冲高回落&#xff0c;午后逐渐止跌。到收盘&#xff0c;沪指跌0.44%报3096.92点&#xff0c;深成指微跌0.03%报10106.96点&#xff0c;创业板指跌0.26%报1998.61点&#xff0c;两市算计成交7700元…

【unity】制作一个角色的初始状态(左右跳二段跳)【2D横板动作游戏】

前言 hi~ 大家好&#xff01;欢迎大家来到我的全新unity学习记录系列。现在我想在2d横板游戏中&#xff0c;实现一个角色的初始状态-闲置状态、移动状态、空中状态。并且是利用状态机进行实现的。 本系列是跟着视频教程走的&#xff0c;所写也是作者个人的学习记录笔记。如有错…

linux centos出现No space left on device解决方案

问题是因为系统磁盘空间不足 解决方法: 找到那个磁盘不足问题 df -lh 发现/dev/mapper/cl-root磁盘已用50G,有如下 解决方案&#xff1a; 1、如果是虚拟机可以通过分配空间使其空间增加 2、将其他不常用磁盘空间分配给cl-root如&#xff08; /dev/mapper/cl-home &#…

unity 使用模拟器进行Profiler性能调试

这篇文章主要记录如何实现通过模拟器对打包的app游戏进行Profiler调试。主要记录一些比较重要的点。 准备工作 首先你要能够打包unity的安卓包&#xff0c;如果没有安装安卓组件&#xff0c;请先安装组件。 安装完成以后&#xff0c;会在unity的安装目录找到相应的SDK 这个…

嵌入式Linux裸机开发(五)中断管理

系列文章目录 文章目录 系列文章目录前言STM32 中断系统IMX6U中断控制8个中断GIC中断控制器GIC介绍中断IDGIC逻辑分块GIC协处理器 中断使能中断优先级 重点代码分析官方SDK函数start.S文件自行编写中断驱动文件 前言 最近在学习中发现&#xff0c;学Linux嵌入式不仅是对Linux的…

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…