目录
元素选择器
关系选择器
属性选择器
伪类选择器
关于:not()的用法
关于:nth-child()的用法
关于:...-child:...-of-type的差异
:empty区分空元素
伪对象选择器
总结
首页 web前端 css教程 CSS选择器整理

CSS选择器整理

Feb 09, 2017 am 11:23 AM
css选择器

很多人都觉得CSS特别简单,但其实真正写好CSS并不容易,CSS的每一点其实内容都很多,就拿选择器来说,CSS选择器大概可以分为五类:

  • 元素选择器

  • 关系选择器

  • 属性选择器

  • 伪类选择器

  • 伪对象选择器

元素选择器

选择器 名称 描述
* 通配选择器 选择所有的元素
E 元素选择器 选择指定的元素
#idName id选择器 选择id属性等于idName的元素
.className class选择器 选择class属性包含className的元素

元素选择器只要是写CSS都会经常用,这一块的内容非常简单,没什么特别要说的。

关系选择器

选择器 名称 描述
E F 包含选择器 选择所有包含在E元素里面的F元素
E>F 子选择器 选择所有作为E元素的子元素F
E+F 相邻选择器 选择紧贴在E元素之后的F元素
E~F 兄弟选择器 选择E元素所有兄弟元素F

这里要注意几点:

  • 子选择器只能选中字元素,而不能选中孙辈;而包含选择符将会选中所有符合条件的后代,包括儿子,孙子,孙子的孙子...

  • 相邻选择符只会选中符合条件的相邻的兄弟元素;而兄弟选择符会选中所有符合条件的兄弟元素,不强制是紧邻的元素。

  • 在Android Browser4.2.*及以下,伪类选择器:checked与兄弟选择符一起使用会有一个bug,查看详情。

属性选择器

选择器 描述
E[att] 选择具有att属性的E元素
E[att="val"] 选择具有att属性且属性值等于val的E元素
E[att~="val"] 选择具有att属性且属性值其中一个等于val的E元素(包含只有一个值且该值等于val的情况)
E[att|="val"] 选择具有att属性且属性值为以val开头并用连接符-分隔的字符串的E元素,如果属性值仅为val,也将被选择
E[att^="val"] 选择具有att属性且属性值为以val开头的字符串的E元素
E[att$="val"] 选择具有att属性且属性值为以val结尾的字符串的E元素
E[att*="val"] 选择具有att属性且属性值为包含val的字符串的E元素

伪类选择器

选择器 描述
E:link 设置超链接a在未被访问前的样式
E:visited 设置超链接a在其链接地址已被访问过时的样式
E:hover 设置元素鼠标在其悬停时的样式
E:active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
E:focus 设置元素在成为输入焦点(该元素的onfocus事件发生)时的样式。(一般应用于表单元素)
E:checked 匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)
E:enabled 匹配用户界面上处于可用状态的元素E。(一般应用于表单元素)
E:disabled 匹配用户界面上处于禁用状态的元素E。(一般应用于表单元素)
E:empty 匹配没有任何子元素(包括text节点)的元素E
E:root 匹配E元素在文档的根元素。在HTML中,根元素永远是HTML
E:not(s) 匹配不含有s选择符的元素E
E:first-child 匹配父元素的第一个子元素E
E:last-child 匹配父元素的最后一个子元素E
E:only-child 匹配父元素仅有的一个子元素E
E:nth-child(n) 匹配父元素的第n个子元素E
E:nth-last-child(n) 匹配父元素的倒数第n个子元素E
E:first-of-type 匹配同类型中的第一个同级兄弟元素E
E:last-of-type 匹配同类型中的最后一个同级兄弟元素E
E:only-of-type 匹配同类型中的唯一的一个同级兄弟元素E
E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E
E:nth-last-of-type(n) 匹配同类型中的倒数第n个同级兄弟元素E

注意事项:

  • 超链接的4种状态(访问前,鼠标悬停,当前被点击,已访问),需要有特定的书写顺序才能生效;a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后

  • E:first-child选择符,E必须是它的兄弟元素中的第一个元素,换言之,E必须是父元素的第一个子元素。与之类似的伪类还有E:last-child,只不过情况正好相反,需要它是最后一个子元素。

关于:not()的用法

假定有个列表,每个列表项都有一条底边线,但是最后一项不需要底边线。

 li:not(:last-child) {
    border-bottom: 1px solid #ddd;
}
登录后复制
登录后复制

上述代码的意思是:给该列表中除最后一项外的所有列表项加一条底边线。是不是很方便。

关于:nth-child()的用法

要使E:nth-child(n)生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素。:first-child:last-child:only-child:nth-last-child(n)也是一样。
nth-child(n)括号里的n可以是一个数字,一个关键字,或者一个公式。

:nth-child(length) /*参数是具体数字 length为整数*/
:nth-child(n) /*参数是n,n从0开始计算*/
:nth-child(n*length) /*n的倍数选择,n从0开始算*/
:nth-child(n+length) /*选择大于等于length后面的元素*/
:nth-child(-n+length) /*选择小于等于length前面的元素*/
:nth-child(n*length+1) /*表示隔几选一*/
:nth-child(2n) / :nth-child(even) /*表示偶数*/
:nth-child(2n+1) / :nth-child(odd) /*表示奇数*/
登录后复制
登录后复制

关于:...-child:...-of-type的差异

这两个系列的属性确实很相似,对于不熟悉的人可能很难区分。

E:first-of-type 总是能命中父元素的第1个为E的子元素,不论父元素第1个子元素是否为E;而E:first-child里的E元素必须是它的兄弟元素中的第一个元素,否则匹配失效。E:last-of-type E:last-child也是同理。
E:nth-of-type(n)总是能命中父元素的第n个为E的子元素,不论父元素第n个子元素是否为E;而E:nth-child(n)会选择父元素的第n个子元素E,如果第n个子元素不是E,则是无效选择符,但n会递增。
关于:nth-child():nth-of-type()的区别可以看这篇文章

:empty区分空元素

选择不包含子元素的p元素:

p:empty
登录后复制
登录后复制

选择包含子元素的p元素:

p:not(:empty)
登录后复制
登录后复制

伪对象选择器

选择器 描述
E:before/E::before 在目标元素E的前面插入的内容。用来和content属性一起使用
E:after/E::after 在目标元素E的后面插入的内容。用来和content属性一起使用
E:first-letter/E::first-letter 设置元素内的第一个字符的样式
E:first-line/E::first-line 设置元素内的第一行的样式
E::placeholder 设置元素文字占位符的样式。(一般用于input输入框)
E::selection 设置元素被选择时的字体颜色和背景颜色

注意事项:

  • ::placeholder在使用时需要加上各个浏览器的前缀;除了Firefox是 ::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder

总结

选择器用得好其实可以让我们少些很多代码。其实还有一些东西没有展开来讲,比如:before:after,后面专门写一篇文章来说。


很多人都觉得CSS特别简单,但其实真正写好CSS并不容易,CSS的每一点其实内容都很多,就拿选择器来说,CSS选择器大概可以分为五类:

  • 元素选择器

  • 关系选择器

  • 属性选择器

  • 伪类选择器

  • 伪对象选择器

元素选择器

选择器 名称 描述
* 通配选择器 选择所有的元素
E 元素选择器 选择指定的元素
#idName id选择器 选择id属性等于idName的元素
.className class选择器 选择class属性包含className的元素

元素选择器只要是写CSS都会经常用,这一块的内容非常简单,没什么特别要说的。

关系选择器

选择器 名称 描述
E F 包含选择器 选择所有包含在E元素里面的F元素
E>F 子选择器 选择所有作为E元素的子元素F
E+F 相邻选择器 选择紧贴在E元素之后的F元素
E~F 兄弟选择器 选择E元素所有兄弟元素F

这里要注意几点:

  • 子选择器只能选中字元素,而不能选中孙辈;而包含选择符将会选中所有符合条件的后代,包括儿子,孙子,孙子的孙子...

  • 相邻选择符只会选中符合条件的相邻的兄弟元素;而兄弟选择符会选中所有符合条件的兄弟元素,不强制是紧邻的元素。

  • 在Android Browser4.2.*及以下,伪类选择器:checked与兄弟选择符一起使用会有一个bug,查看详情。

属性选择器

选择器 描述
E[att] 选择具有att属性的E元素
E[att="val"] 选择具有att属性且属性值等于val的E元素
E[att~="val"] 选择具有att属性且属性值其中一个等于val的E元素(包含只有一个值且该值等于val的情况)
E[att|="val"] 选择具有att属性且属性值为以val开头并用连接符-分隔的字符串的E元素,如果属性值仅为val,也将被选择
E[att^="val"] 选择具有att属性且属性值为以val开头的字符串的E元素
E[att$="val"] 选择具有att属性且属性值为以val结尾的字符串的E元素
E[att*="val"] 选择具有att属性且属性值为包含val的字符串的E元素

伪类选择器

选择器 描述
E:link 设置超链接a在未被访问前的样式
E:visited 设置超链接a在其链接地址已被访问过时的样式
E:hover 设置元素鼠标在其悬停时的样式
E:active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
E:focus 设置元素在成为输入焦点(该元素的onfocus事件发生)时的样式。(一般应用于表单元素)
E:checked 匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)
E:enabled 匹配用户界面上处于可用状态的元素E。(一般应用于表单元素)
E:disabled 匹配用户界面上处于禁用状态的元素E。(一般应用于表单元素)
E:empty 匹配没有任何子元素(包括text节点)的元素E
E:root 匹配E元素在文档的根元素。在HTML中,根元素永远是HTML
E:not(s) 匹配不含有s选择符的元素E
E:first-child 匹配父元素的第一个子元素E
E:last-child 匹配父元素的最后一个子元素E
E:only-child 匹配父元素仅有的一个子元素E
E:nth-child(n) 匹配父元素的第n个子元素E
E:nth-last-child(n) 匹配父元素的倒数第n个子元素E
E:first-of-type 匹配同类型中的第一个同级兄弟元素E
E:last-of-type 匹配同类型中的最后一个同级兄弟元素E
E:only-of-type 匹配同类型中的唯一的一个同级兄弟元素E
E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E
E:nth-last-of-type(n) 匹配同类型中的倒数第n个同级兄弟元素E

注意事项:

  • 超链接的4种状态(访问前,鼠标悬停,当前被点击,已访问),需要有特定的书写顺序才能生效;a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后

  • E:first-child选择符,E必须是它的兄弟元素中的第一个元素,换言之,E必须是父元素的第一个子元素。与之类似的伪类还有E:last-child,只不过情况正好相反,需要它是最后一个子元素。

关于:not()的用法

假定有个列表,每个列表项都有一条底边线,但是最后一项不需要底边线。

 li:not(:last-child) {
    border-bottom: 1px solid #ddd;
}
登录后复制
登录后复制

上述代码的意思是:给该列表中除最后一项外的所有列表项加一条底边线。是不是很方便。

关于:nth-child()的用法

要使E:nth-child(n)生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素。:first-child:last-child:only-child:nth-last-child(n)也是一样。
nth-child(n)括号里的n可以是一个数字,一个关键字,或者一个公式。

:nth-child(length) /*参数是具体数字 length为整数*/
:nth-child(n) /*参数是n,n从0开始计算*/
:nth-child(n*length) /*n的倍数选择,n从0开始算*/
:nth-child(n+length) /*选择大于等于length后面的元素*/
:nth-child(-n+length) /*选择小于等于length前面的元素*/
:nth-child(n*length+1) /*表示隔几选一*/
:nth-child(2n) / :nth-child(even) /*表示偶数*/
:nth-child(2n+1) / :nth-child(odd) /*表示奇数*/
登录后复制
登录后复制

关于:...-child:...-of-type的差异

这两个系列的属性确实很相似,对于不熟悉的人可能很难区分。

E:first-of-type 总是能命中父元素的第1个为E的子元素,不论父元素第1个子元素是否为E;而E:first-child里的E元素必须是它的兄弟元素中的第一个元素,否则匹配失效。E:last-of-type E:last-child也是同理。
E:nth-of-type(n)总是能命中父元素的第n个为E的子元素,不论父元素第n个子元素是否为E;而E:nth-child(n)会选择父元素的第n个子元素E,如果第n个子元素不是E,则是无效选择符,但n会递增。
关于:nth-child():nth-of-type()的区别可以看这篇文章

:empty区分空元素

选择不包含子元素的p元素:

p:empty
登录后复制
登录后复制

选择包含子元素的p元素:

p:not(:empty)
登录后复制
登录后复制

伪对象选择器

选择器 描述
E:before/E::before 在目标元素E的前面插入的内容。用来和content属性一起使用
E:after/E::after 在目标元素E的后面插入的内容。用来和content属性一起使用
E:first-letter/E::first-letter 设置元素内的第一个字符的样式
E:first-line/E::first-line 设置元素内的第一行的样式
E::placeholder 设置元素文字占位符的样式。(一般用于input输入框)
E::selection 设置元素被选择时的字体颜色和背景颜色

注意事项:

  • ::placeholder在使用时需要加上各个浏览器的前缀;除了Firefox是 ::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder

总结

选择器用得好其实可以让我们少些很多代码。其实还有一些东西没有展开来讲,比如:before:after,后面专门写一篇文章来说。

更多CSS选择器整理相关文章请关注PHP中文网!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何调整HTML文本框的大小 如何调整HTML文本框的大小 Feb 20, 2024 am 10:03 AM

HTML文本框大小的设定在前端开发中是非常常见的操作。本文将介绍如何设置文本框的尺寸,并提供具体的代码示例。在HTML中,可以使用CSS来设置文本框的尺寸。具体的代码如下:input[type="text&quot

如何调整WordPress主题避免错位显示 如何调整WordPress主题避免错位显示 Mar 05, 2024 pm 02:03 PM

如何调整WordPress主题避免错位显示,需要具体代码示例WordPress作为一个功能强大的CMS系统,受到了许多网站开发者和站长的喜爱。然而,在使用WordPress创建网站时,经常会遇到主题错位显示的问题,这对于用户体验和页面美观都会造成影响。因此,合理调整WordPress主题以避免错位显示是非常重要的。本文将介绍如何通过具体的代码示例来进行主题调

css选择器排除部分的元素是什么 css选择器排除部分的元素是什么 Apr 06, 2024 am 02:42 AM

:not() 选择器可用于排除特定条件的元素,其语法为 :not(selector) {样式规则}。示例::not(p) 排除所有非段落元素,li:not(.active) 排除非活动列表项,:not(table) 排除非表格元素,div:not([data-role="primary"]) 排除非 primary 角色的 div 元素。

css选择器优先级是什么 css选择器优先级是什么 Apr 25, 2024 pm 05:30 PM

CSS 选择器优先级按如下顺序决定:特殊性(ID > 类 > 类型 > 通配符)来源顺序(行内 > 内部样式表 > 外部样式表 > 用户代理样式表)声明顺序(靠后的声明优先)重要性(!important 强制提高优先级)

css选择器哪些是高级选择器 css选择器哪些是高级选择器 Oct 07, 2023 pm 02:59 PM

css选择器中的高级选择器有后代选择器、子元素选择器、相邻兄弟选择器、通用兄弟选择器、属性选择器、类选择器、ID选择器、伪类选择器和伪元素选择器等。详细介绍:1、后代选择器使用空格分隔的选择器,表示选取某个元素的后代元素;2、子元素选择器使用大于号分隔的选择器,表示选取某个元素的直接子元素;3、相邻兄弟选择器使用加号分隔的选择器,表示选取紧接在某个元素后面的第一个兄弟元素等等。

了解CSS选择器通配符的权重和优先级的深层次理解 了解CSS选择器通配符的权重和优先级的深层次理解 Dec 26, 2023 pm 01:36 PM

深入理解CSS选择器通配符的权重和优先级在CSS样式表中,选择器是用来指定样式应用于哪些HTML元素的重要工具。选择器的优先级和权重决定了当多个规则同时作用于一个HTML元素时,应用哪个样式。通配符选择器是CSS中一种常见的选择器。它使用“*”符号表示,表示匹配所有HTML元素。通配符选择器虽然简单,但在某些情况下非常有用。然而,通配符选择器的权重和优先级也

学会使用CSS选择器的基本语法 学会使用CSS选择器的基本语法 Jan 13, 2024 am 11:44 AM

掌握基本的CSS选择器语法,需要具体代码示例CSS选择器是前端开发中非常重要的一部分,它可以用来选择和修改HTML文档的各个元素。掌握基本的CSS选择器语法对于编写高效的样式表是至关重要的。本文将介绍一些常见的CSS选择器以及对应的代码示例。元素选择器元素选择器是最基本的选择器,可以通过元素的标签名来选择对应的元素。例如,要选择所有的段落(p元素),可以使用

深入学习响应式布局框架:适合初学者到专家的详尽指南 深入学习响应式布局框架:适合初学者到专家的详尽指南 Feb 19, 2024 pm 05:43 PM

响应式布局框架解析:从初学者到专家的必备指南随着移动设备的普及和多样化,响应式布局成为了现代Web设计的必备技能。响应式布局框架以其简单、灵活和可维护的特点,成为了开发者们的首选工具。然而,对于初学者来说,学习和理解响应式布局框架可能会感到有些困惑。本文将从初学者到专家,为您提供一个详细的指南,帮助您掌握响应式布局框架,同时提供具体的代码示例。什么是响应式布

See all articles