CSS3选择器

本文详细介绍了CSS3中的各种选择器,包括:nth-child(an+b)、:nth-last-child(an+b)、:nth-of-type(an+b)、:not()等,以及它们在选取页面元素时的具体作用和用法。此外,还提到了:checked、:disabled等针对表单元素的选择器,以及伪元素选择器如::before、::after等,帮助开发者更精确地控制网页样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择器

:nth-child(an+b)

用途:选择父元素内处于特定序数位置的所有类型子元素,从第一个子元素开始计数。

语法::nth-child(an+b),其中 a、b 是整数,n 是一个非负整数索引。表达多种位置模式,如:

  • :nth-child(n):选择所有子元素。
  • :nth-child(odd) 或 :nth-child(even):选择奇数或偶数位置的子元素。
  • :nth-child(3n):选择每第3个子元素。
  • :nth-child(2n+1):选择所有奇数位置的子元素。
  • :nth-child(5n-2):选择每第5个子元素,从第3个开始。

:nth-last-child(an+b)

用途:选择父元素内处于特定序数位置的所有类型子元素,但从最后一个子元素开始反向计数。

语法::nth-last-child(an+b),语法和含义与 :nth-child() 相同,但计数方向相反。

:nth-of-type(an+b)

用途:选择父元素内处于特定序数位置的同类型子元素,从第一个同类型子元素开始计数。

语法::nth-of-type(an+b),语法和含义与 :nth-child() 相同,但仅限于同类型元素。

:nth-last-of-type(an+b)

用途:选择父元素内处于特定序数位置的同类型子元素,但从最后一个同类型子元素开始反向计数。

语法::nth-last-of-type(an+b),语法和含义与 :nth-of-type() 相同,但计数方向相反。

/* 选择列表中倒数第3个li元素 */
li:nth-last-child(3) {
  background-color: orange;
}

/* 选择div内最后一个段落元素之前的第2个段落元素 */
div p:nth-last-of-type(2) {
  font-weight: bold;
}

/* 选择所有img元素中,从最后一个开始计算的第3个偶数位置的img元素 */
img:nth-last-of-type(2n+1) {
  border: 1px solid black;
}

:not()

用途:选择不匹配指定选择器的所有元素。
语法::not(selector),其中 selector 是任何有效的CSS选择器。

  /* 选择所有非div元素 */
  :not(div) {
    color: red;
  }

  /* 选择未被选中的复选框 */
  input[type="checkbox"]:not(:checked) {
    opacity: 0.5;
  }

:checked

用途:选择所有被选中的表单输入元素,如复选框(<input type="checkbox">)和单选按钮(<input type="radio">)。

  /* 为选中的复选框添加边框 */
  input[type="checkbox"]:checked {
    border: 1px solid blue;
  }

:disabled

用途:选择所有禁用的表单元素,如 <input>, <select>, <textarea> 等。

  /* 为禁用的按钮添加灰色文本 */
  button:disabled {
    color: gray;
  }

:empty

用途:选择没有子元素(包括文本节点)的元素。

  /* 为空的段落添加提示文本 */
  p:empty::before {
    content: "This paragraph is empty.";
    color: darkred;
  }

:enabled

用途:选择所有启用的表单元素,与 :disabled 相反。

  /* 为启用的输入框添加边框 */
  input:enabled {
    border: 1px solid green;
  }

:first-of-type

用途:选择父元素内属于其类型的第一个子元素。

  /* 为第一个段落添加背景色 */
  p:first-of-type {
    background-color: lightblue;
  }

:last-of-type

用途:选择父元素内属于其类型的最后一个子元素。

  /* 为最后一个段落添加下划线 */
  p:last-of-type {
    text-decoration: underline;
  }

:only-child

用途:选择没有任何同胞元素的元素。

  /* 为独占一行的元素增加垂直间距 */
  .container > :only-child {
    margin-top: 20px;
    margin-bottom: 20px;
  }

:only-of-type

用途:选择没有同类型同胞元素的元素。

  /* 为唯一的段落元素添加粗体 */
  .content > p:only-of-type {
    font-weight: bold;
  }

:required

用途:选择具有 required 属性的表单元素。

  /* 为必填字段添加红色星号 */
  input:required::after {
    content: "*";
    color: red;
  }

:optional

用途:选择没有 required 属性的表单元素。

  /* 为非必填字段添加灰色问号 */
  input:optional::after {
    content: "?";
    color: gray;
  }

::before

用途:在元素内容的开头插入生成的内容(通常通过 content 属性定义),并对其进行样式化。

  /* 为每个段落前添加蓝色引号 */
  p::before {
    content: '"';
    color: blue;
    font-size: 24px;
  }

::after

用途:在元素内容的结尾插入生成的内容(通常通过 content 属性定义),并对其进行样式化。

  /* 为每个段落后添加红色引号 */
  p::after {
    content: '"';
    color: red;
    font-size: 24px;
  }

::first-letter

用途:选择元素内首字母(可能包括多个字符,如连字符、撇号等与首字母形成视觉整体的部分),并对它单独应用样式。

  /* 为每个段落首字母添加大写和特殊颜色 */
  p::first-letter {
    font-size: 2em;
    font-weight: bold;
    color: #333;
  }

::first-line

用途:选择元素内第一行文本,并对其单独应用样式。

  /* 为每个段落第一行添加特殊字体和颜色 */
  p::first-line {
    font-family: 'Georgia', serif;
    color: #999;
  }

::selection

用途:选择用户当前选中文本的范围(即鼠标拖选或键盘选中),并对其应用样式。

  /* 设置选中文本的背景色和文字颜色 */
  ::selection {
    background-color: rgba(0, 128, 255, 0..jpg);
    color: white;
  }

:targe

用途:选择当前URL片段标识符(fragment identifier,即URL中#后面的部分)与该元素id属性相匹配的元素。

  <div id="section1">
    <h2>Section 1</h2>
    <!-- content... -->
  </div>

  <div id="section2">
    <h2>Section 2</h2>
    <!-- content... -->
  </div>

  <ul>
    <li><a href="#section1">Go to Section 1</a></li>
    <li><a href="#section2">Go to Section 2</a></li>
  </ul>
  /* 当URL中包含#sectionX时,高亮相应的section */
  :target {
    background-color: lightyellow;
    border-left: 5px solid #333;
  }

:any-link

用途:选择所有未访问和已访问过的链接(<a>元素),是一个简写选择器,相当于:link, :visited的组合。

  /* 给所有链接添加下划线 */
  :any-link {
    text-decoration: underline;
  }

:link

用途:选择所有未访问过的链接(<a>元素,其href属性不是空且尚未被用户点击过的链接)。

  /* 未访问过的链接使用蓝色 */
  :link {
    color: blue;
  }

:visited

用途:选择所有已访问过的链接(用户已经点击过且浏览器记录了访问历史的<a>元素)。

  /* 已访问过的链接使用紫色 */
  :visited {
    color: purple;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天涯学馆

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值