CSS3中的逻辑选择器有哪些

发布时间:2022-07-15 13:48:21 作者:iii
来源:亿速云 阅读:149

CSS3中的逻辑选择器有哪些

引言

CSS(层叠样式表)是用于描述HTML或XML文档外观的样式表语言。随着Web技术的不断发展,CSS3引入了许多新的特性,其中包括逻辑选择器。逻辑选择器允许开发者根据元素的逻辑关系来选择元素,从而更灵活地控制样式。本文将详细介绍CSS3中的逻辑选择器,包括其语法、用法以及实际应用场景。

1. 逻辑选择器的基本概念

1.1 什么是逻辑选择器

逻辑选择器是CSS3中引入的一种新型选择器,它允许开发者根据元素的逻辑关系来选择元素。与传统的选择器不同,逻辑选择器不仅仅依赖于元素的标签名、类名或ID,还可以根据元素的属性、状态、位置等逻辑条件来选择元素。

1.2 逻辑选择器的优势

逻辑选择器的引入使得CSS的选择能力更加强大和灵活。开发者可以通过逻辑选择器实现更复杂的样式控制,减少对JavaScript的依赖,提高代码的可维护性和可读性。

2. CSS3中的逻辑选择器类型

CSS3中的逻辑选择器主要包括以下几种类型:

接下来,我们将逐一介绍这些逻辑选择器的语法和用法。

3. 属性选择器

属性选择器允许开发者根据元素的属性及其值来选择元素。CSS3中的属性选择器主要包括以下几种:

3.1 [attr] 选择器

[attr] 选择器用于选择带有指定属性的元素。

/* 选择所有带有title属性的元素 */
[title] {
  color: red;
}

3.2 [attr=value] 选择器

[attr=value] 选择器用于选择带有指定属性且属性值等于指定值的元素。

/* 选择所有type属性值为"text"的input元素 */
input[type="text"] {
  background-color: yellow;
}

3.3 [attr~=value] 选择器

[attr~=value] 选择器用于选择带有指定属性且属性值包含指定词汇的元素。

/* 选择所有class属性值包含"example"的元素 */
[class~="example"] {
  border: 1px solid black;
}

3.4 [attr|=value] 选择器

[attr|=value] 选择器用于选择带有指定属性且属性值以指定值开头(后面可以跟连字符)的元素。

/* 选择所有lang属性值以"en"开头的元素 */
[lang|="en"] {
  font-family: Arial, sans-serif;
}

3.5 [attr^=value] 选择器

[attr^=value] 选择器用于选择带有指定属性且属性值以指定值开头的元素。

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

3.6 [attr$=value] 选择器

[attr$=value] 选择器用于选择带有指定属性且属性值以指定值结尾的元素。

/* 选择所有src属性值以".png"结尾的img元素 */
img[src$=".png"] {
  border: 2px solid blue;
}

3.7 [attr*=value] 选择器

[attr*=value] 选择器用于选择带有指定属性且属性值包含指定值的元素。

/* 选择所有alt属性值包含"logo"的img元素 */
img[alt*="logo"] {
  opacity: 0.5;
}

4. 伪类选择器

伪类选择器允许开发者根据元素的状态或位置来选择元素。CSS3中的伪类选择器主要包括以下几种:

4.1 :link:visited 伪类

:link 伪类用于选择未访问的链接,:visited 伪类用于选择已访问的链接。

/* 未访问的链接 */
a:link {
  color: blue;
}

/* 已访问的链接 */
a:visited {
  color: purple;
}

4.2 :hover 伪类

:hover 伪类用于选择鼠标悬停在其上的元素。

/* 鼠标悬停在按钮上时改变背景颜色 */
button:hover {
  background-color: yellow;
}

4.3 :active 伪类

:active 伪类用于选择被激活的元素(例如,鼠标点击时)。

/* 按钮被点击时改变背景颜色 */
button:active {
  background-color: red;
}

4.4 :focus 伪类

:focus 伪类用于选择获得焦点的元素(例如,输入框获得焦点时)。

/* 输入框获得焦点时改变边框颜色 */
input:focus {
  border-color: green;
}

4.5 :first-child:last-child 伪类

:first-child 伪类用于选择父元素的第一个子元素,:last-child 伪类用于选择父元素的最后一个子元素。

/* 选择父元素的第一个子元素 */
li:first-child {
  font-weight: bold;
}

/* 选择父元素的最后一个子元素 */
li:last-child {
  font-style: italic;
}

4.6 :nth-child(n) 伪类

:nth-child(n) 伪类用于选择父元素的第n个子元素。

/* 选择父元素的第2个子元素 */
li:nth-child(2) {
  color: red;
}

/* 选择父元素的偶数子元素 */
li:nth-child(even) {
  background-color: lightgray;
}

/* 选择父元素的奇数子元素 */
li:nth-child(odd) {
  background-color: lightblue;
}

4.7 :nth-last-child(n) 伪类

:nth-last-child(n) 伪类用于选择父元素的倒数第n个子元素。

/* 选择父元素的倒数第2个子元素 */
li:nth-last-child(2) {
  color: blue;
}

4.8 :nth-of-type(n) 伪类

:nth-of-type(n) 伪类用于选择父元素的第n个指定类型的子元素。

/* 选择父元素的第2个p元素 */
p:nth-of-type(2) {
  font-size: 1.2em;
}

4.9 :nth-last-of-type(n) 伪类

:nth-last-of-type(n) 伪类用于选择父元素的倒数第n个指定类型的子元素。

/* 选择父元素的倒数第2个p元素 */
p:nth-last-of-type(2) {
  font-size: 1.2em;
}

4.10 :first-of-type:last-of-type 伪类

:first-of-type 伪类用于选择父元素的第一个指定类型的子元素,:last-of-type 伪类用于选择父元素的最后一个指定类型的子元素。

/* 选择父元素的第一个p元素 */
p:first-of-type {
  font-weight: bold;
}

/* 选择父元素的最后一个p元素 */
p:last-of-type {
  font-style: italic;
}

4.11 :only-child 伪类

:only-child 伪类用于选择父元素中唯一的子元素。

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

4.12 :only-of-type 伪类

:only-of-type 伪类用于选择父元素中唯一指定类型的子元素。

/* 选择父元素中唯一的p元素 */
p:only-of-type {
  background-color: yellow;
}

4.13 :empty 伪类

:empty 伪类用于选择没有任何子元素的元素。

/* 选择没有任何子元素的div元素 */
div:empty {
  display: none;
}

4.14 :not(selector) 伪类

:not(selector) 伪类用于选择不符合指定选择器的元素。

/* 选择所有不是p元素的元素 */
:not(p) {
  color: green;
}

5. 伪元素选择器

伪元素选择器允许开发者选择元素的特定部分。CSS3中的伪元素选择器主要包括以下几种:

5.1 ::before 伪元素

::before 伪元素用于在元素内容之前插入内容。

/* 在每个p元素内容之前插入"Note: " */
p::before {
  content: "Note: ";
  font-weight: bold;
}

5.2 ::after 伪元素

::after 伪元素用于在元素内容之后插入内容。

/* 在每个p元素内容之后插入" - End" */
p::after {
  content: " - End";
  font-style: italic;
}

5.3 ::first-letter 伪元素

::first-letter 伪元素用于选择元素的第一个字母。

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

5.4 ::first-line 伪元素

::first-line 伪元素用于选择元素的第一行。

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

5.5 ::selection 伪元素

::selection 伪元素用于选择用户选中的文本。

/* 选择用户选中的文本 */
::selection {
  background-color: yellow;
  color: black;
}

6. 组合选择器

组合选择器允许开发者将多个选择器组合在一起,以选择更具体的元素。CSS3中的组合选择器主要包括以下几种:

6.1 后代选择器

后代选择器用于选择某个元素的后代元素。

/* 选择div元素内的所有p元素 */
div p {
  color: blue;
}

6.2 子元素选择器

子元素选择器用于选择某个元素的直接子元素。

/* 选择div元素的直接子元素p */
div > p {
  color: red;
}

6.3 相邻兄弟选择器

相邻兄弟选择器用于选择某个元素的下一个兄弟元素。

/* 选择h1元素的下一个兄弟元素p */
h1 + p {
  font-size: 1.2em;
}

6.4 通用兄弟选择器

通用兄弟选择器用于选择某个元素的所有兄弟元素。

/* 选择h1元素的所有兄弟元素p */
h1 ~ p {
  color: green;
}

7. 否定选择器

否定选择器允许开发者选择不符合指定选择器的元素。CSS3中的否定选择器是 :not(selector)

7.1 :not(selector) 选择器

:not(selector) 选择器用于选择不符合指定选择器的元素。

/* 选择所有不是p元素的元素 */
:not(p) {
  color: green;
}

8. 实际应用场景

8.1 表单样式控制

通过属性选择器和伪类选择器,可以轻松控制表单元素的样式。

/* 选择所有type为"text"的input元素 */
input[type="text"] {
  border: 1px solid #ccc;
}

/* 选择所有获得焦点的input元素 */
input:focus {
  border-color: blue;
}

/* 选择所有无效的input元素 */
input:invalid {
  border-color: red;
}

8.2 列表样式控制

通过伪类选择器,可以轻松控制列表项的样式。

/* 选择列表的第一个和最后一个项 */
li:first-child, li:last-child {
  font-weight: bold;
}

/* 选择列表的偶数项 */
li:nth-child(even) {
  background-color: lightgray;
}

/* 选择列表的奇数项 */
li:nth-child(odd) {
  background-color: lightblue;
}

8.3 动态内容插入

通过伪元素选择器,可以在元素内容前后插入动态内容。

/* 在每个p元素内容之前插入"Note: " */
p::before {
  content: "Note: ";
  font-weight: bold;
}

/* 在每个p元素内容之后插入" - End" */
p::after {
  content: " - End";
  font-style: italic;
}

8.4 复杂选择器组合

通过组合选择器,可以实现更复杂的样式控制。

/* 选择div元素内的所有p元素,但不包括class为"exclude"的p元素 */
div p:not(.exclude) {
  color: blue;
}

/* 选择h1元素的下一个兄弟元素p,且该p元素不是最后一个子元素 */
h1 + p:not(:last-child) {
  font-size: 1.2em;
}

9. 总结

CSS3中的逻辑选择器为开发者提供了强大的选择能力,使得样式控制更加灵活和高效。通过属性选择器、伪类选择器、伪元素选择器、组合选择器和否定选择器,开发者可以根据元素的逻辑关系来选择元素,从而实现更复杂的样式控制。在实际开发中,合理运用这些逻辑选择器可以大大提高代码的可维护性和可读性,减少对JavaScript的依赖,提升用户体验。

10. 参考资料


以上是关于CSS3中逻辑选择器的详细介绍,涵盖了属性选择器、伪类选择器、伪元素选择器、组合选择器和否定选择器的语法、用法以及实际应用场景。希望本文能帮助开发者更好地理解和运用CSS3中的逻辑选择器,提升Web开发技能。

推荐阅读:
  1. 什么是css选择器以及css3中种常见的基本选择器有哪些
  2. CSS3选择器有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css3

上一篇:Vue3中的Teleport功能怎么使用

下一篇:在React中怎么应用SOLID原则

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》