【前端系列】CSS 常见的选择器

CSS 常见的选择器

CSS(层叠样式表)是一种用于描述网页样式的标记语言,它定义了网页中各个元素的外观和布局。在 CSS 中,选择器是一种用于选择要应用样式的 HTML 元素的模式。选择器允许开发人员根据元素的类型、属性、关系等来选择元素,从而对它们应用样式。

选择器在 CSS 中扮演着至关重要的角色,它们可以帮助开发人员轻松地选择页面中的特定元素,从而实现样式的精确控制。在本文中,我们将介绍一些常见的 CSS 选择器,包括基本选择器、属性选择器、伪类和伪元素等,以帮助您更好地理解和应用 CSS 样式。

1. 基本选择器

基本选择器是最简单和最常用的选择器类型,它们直接选择特定类型的 HTML 元素。以下是一些常见的基本选择器:

1.1 元素选择器

元素选择器选择特定类型的 HTML 元素。例如,如果要选择所有段落元素(<p>),可以使用以下样式:

css 复制代码
p {
  /* 样式规则 */
}

1.2 类选择器

类选择器选择具有特定类名的元素。类名以.开头。例如,要选择所有类名为highlight的元素,可以使用以下样式:

css 复制代码
.highlight {
  /* 样式规则 */
}

1.3 ID 选择器

ID 选择器选择具有特定 ID 的元素。ID 名以#开头。虽然 ID 选择器在页面中是唯一的,但应避免过度使用它们,因为它们的优先级很高,可能导致样式不易维护。例如,要选择 ID 为header的元素,可以使用以下样式:

css 复制代码
#header {
  /* 样式规则 */
}

2. 属性选择器

属性选择器允许您选择具有特定属性或属性值的元素。以下是一些常见的属性选择器:

2.1 属性存在选择器

属性存在选择器选择具有指定属性的所有元素,而不考虑其值是什么。例如,要选择所有具有title属性的元素,可以使用以下样式:

css 复制代码
[title] {
  /* 样式规则 */
}

2.2 属性值选择器

属性值选择器选择具有指定属性值的元素。例如,要选择所有href属性值以https://开头的链接,可以使用以下样式:

css 复制代码
[href^="https://"]
{
  /* 样式规则 */
}

2.3 属性包含选择器

属性包含选择器选择具有指定属性值的元素,其中属性值包含特定字符串。例如,要选择所有class属性包含button的元素,可以使用以下样式:

css 复制代码
[class*="button"] {
  /* 样式规则 */
}

3. 关系选择器

关系选择器允许您选择特定元素之间的关系。以下是一些常见的关系选择器:

3.1 后代选择器

后代选择器选择某个元素的后代元素。它使用空格分隔两个选择器。例如,要选择所有段落元素中的<strong>元素,可以使用以下样式:

css 复制代码
p strong {
  /* 样式规则 */
}

3.2 子元素选择器

子元素选择器选择某个元素的直接子元素。它使用>符号分隔两个选择器。例如,要选择所有<ul>元素的直接子元素<li>,可以使用以下样式:

css 复制代码
ul > li {
  /* 样式规则 */
}

3.3 相邻兄弟选择器

相邻兄弟选择器选择某个元素的相邻兄弟元素。它使用+符号分隔两个选择器。例如,要选择所有<h2>元素后紧跟的<p>元素,可以使用以下样式:

css 复制代码
h2 + p {
  /* 样式规则 */
}

4. 伪类和伪元素选择器

伪类和伪元素选择器允许您选择元素的特定状态或位置。以下是一些常见的伪类和伪元素选择器:

4.1 :hover 伪类

:hover伪类选择鼠标悬停在元素上时的状态。例如,要在鼠标悬停在链接上时改变其颜色,可以使用以下样式:

css 复制代码
a:hover {
  /* 样式规则 */
}

4.2 :nth-child() 伪类

:nth-child()伪类选择元素在其父元素中的位置。它接受一个参数,用于指定位置。例如,要选择每个偶数行的元素,可以使用以下样式:

css 复制代码
tr:nth-child(even) {
  /* 样式规则 */
}

4.3 ::before 和 ::after 伪元素

::before和::after伪元素允许您在元素的内容之前和之后插入内容。例如,要在每个段落前添加引号,可以使用以下样式:

css 复制代码
p::before {
  content: '"';
}

结论

CSS 选择器是控制网页样式的重要工具之一。本文介绍了一些常见的 CSS 选择器类型,包括基本选择器、属性选择器、关系选择器以及伪类和伪元素选择器。了解和熟练运用这些选择器将使您能够更好

相关推荐
卸任26 分钟前
Vibe coding工具使用心得
前端·ai编程
brien91 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance1 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M2 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写2 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李2 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易2 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马2 小时前
前沿视界
前端
kyriewen2 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易2 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员