CSS3 的高级选择器 (Advanced Selectors)

11. CSS3 的高级选择器 (Advanced Selectors)

11.1 结构性伪类 (Structural Pseudo-classes)

结构性伪类 允许你选择特定位置或状态的元素,基于它们在 DOM 中的位置或结构。

:nth-child()

  • 选择元素的子元素,根据指定的模式进行选择。

示例代码

/* 选择每个第三个子元素 */
:nth-child(3n) {
  background-color: lightblue;
}

解释

  • :nth-child(3n) 选择每个第 3 个子元素,背景颜色为浅蓝色。

:nth-of-type()

  • 选择指定类型的元素,在同类型的兄弟元素中按模式选择。

示例代码

/* 选择每个第二个 <p> 元素 */
p:nth-of-type(2n) {
  font-weight: bold;
}

解释

  • p:nth-of-type(2n) 选择每个第二个 <p> 元素,字体加粗。

:first-child:last-child

  • 选择父元素的第一个和最后一个子元素。

示例代码

/* 选择每个父元素的第一个子元素 */
:first-child {
  font-size: 20px;
}

/* 选择每个父元素的最后一个子元素 */
:last-child {
  color: red;
}

解释

  • :first-child 选择每个父元素的第一个子元素,字体大小为 20px。
  • :last-child 选择每个父元素的最后一个子元素,字体颜色为红色。

:only-child

  • 选择只有一个子元素的父元素中的唯一子元素。

示例代码

/* 选择父元素中唯一的子元素 */
:only-child {
  border: 2px solid black;
}

解释

  • :only-child 选择父元素中唯一的子元素,添加黑色边框。
11.2 伪元素 (Pseudo-elements)

伪元素 允许你对元素的特定部分应用样式,如内容的前面或后面。

::before::after

  • 在元素内容的前面或后面插入内容。

示例代码

/* 在每个 <h2> 元素的前面插入图标 */
h2::before {
  content: "🔔";
  margin-right: 10px;
}

/* 在每个 <h2> 元素的后面插入装饰 */
h2::after {
  content: " ★";
  color: gold;
}

解释

  • h2::before<h2> 元素的前面插入一个铃铛图标。
  • h2::after<h2> 元素的后面插入一个金色星星。

::first-line::first-letter

  • 选择元素的第一行或第一字母进行样式化。

示例代码

/* 选择每个段落的第一行 */
p::first-line {
  font-weight: bold;
}

/* 选择每个段落的第一字母 */
p::first-letter {
  font-size: 2em;
  color: blue;
}

解释

  • p::first-line 选择每个 <p> 元素的第一行,字体加粗。
  • p::first-letter 选择每个 <p> 元素的第一字母,字体大小为 2em,颜色为蓝色。
11.3 属性选择器 (Attribute Selectors)

属性选择器 允许你根据元素的属性及其值选择元素。

基本语法

  • [attribute]:选择具有指定属性的元素。
  • [attribute=value]:选择具有指定属性值的元素。
  • [attribute^=value]:选择属性值以指定值开头的元素。
  • [attribute$=value]:选择属性值以指定值结尾的元素。
  • [attribute*=value]:选择属性值包含指定值的元素。

示例代码

/* 选择所有具有 href 属性的 <a> 元素 */
a[href] {
  color: blue;
}

/* 选择 href 属性值为 # 的 <a> 元素 */
a[href="#"] {
  font-weight: bold;
}

/* 选择 href 属性值以 "http" 开头的 <a> 元素 */
a[href^="http"] {
  color: green;
}

/* 选择 href 属性值以 ".com" 结尾的 <a> 元素 */
a[href$=".com"] {
  color: red;
}

/* 选择 href 属性值包含 "example" 的 <a> 元素 */
a[href*="example"] {
  text-decoration: underline;
}

解释

  • a[href] 选择所有具有 href 属性的 <a> 元素,颜色为蓝色。
  • a[href="#"] 选择 href 属性值为 #<a> 元素,字体加粗。
  • a[href^="http"] 选择 href 属性值以 http 开头的 <a> 元素,颜色为绿色。
  • a[href$=".com"] 选择 href 属性值以 .com 结尾的 <a> 元素,颜色为红色。
  • a[href*="example"] 选择 href 属性值包含 example<a> 元素,文本下划线。
11.4 伪类选择器的高级用法

:not()

  • 选择不符合指定选择器的元素。

示例代码

/* 选择所有不含 .exclude 类的 <div> 元素 */
div:not(.exclude) {
  background-color: lightgray;
}

解释

  • div:not(.exclude) 选择所有不包含 .exclude 类的 <div> 元素,背景颜色为浅灰色。

:nth-last-child()

  • 从元素的最后一个子元素开始选择。

示例代码

/* 选择每个倒数第二个子元素 */
:nth-last-child(2) {
  color: purple;
}

解释

  • :nth-last-child(2) 选择每个倒数第二个子元素,颜色为紫色。

以上就是 CSS3 的高级选择器 (Advanced Selectors) 的详细讲解。通过使用这些选择器,你可以更精确地选择和样式化网页上的元素,使你的 CSS 更加灵活和强大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳房子的前端

你的打赏能让我更有力地创造

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值