css 选择器

一、CSS选择器常见的有几种?

基本选择器

  • 通配选择器 选择文档中所有的html元素,用一个*表示
  • 元素选择器 选择指定类型的的html元素
  • ID选择器 选择指定ID属性值为"id"的html元素,选择的时候前面加上一个#
  • 类选择器 选择指定class属性值为"class"的任意多个html元素,选择的时候前面加上一个.

层次选择器

选择器类型 选择器 含义 css
多元素选择器 E,F 选择匹配E元素,F元素 1
后代选择器 E F 选择匹配E元素的F子元素 1
子孙选择器 E > F 选择匹配E元素下的直接子元素F 2
相邻兄弟选择器 E + F 选择匹配E元素后的直接相邻元素F 2
通用相邻选择器 E ~ F 选择匹配E元素后的所有同级元素F 3

伪类选择器

选择器 含义 css
E:first-child 匹配E元素的第一个子元素 2
E:last-child 匹配E元素的最后一个子元素 3
E:root 匹配E元素所在文档的根元素 3
E:nth-child(n) 匹配E元素的第n个子元素 3
E:nth-last-child(n) 匹配E元素的倒数第n个子元素 3
E:nth-of-type(n) 匹配父元素内具有指定类型的第n个E元素 3
E:nth-last-of-type(n) 匹配父元素内具有指定类型的倒数第n个E元素 3
E:first-of-type 匹配父元素内具有指定类型的第一个E元素 3
E:last-of-type 匹配父元素内具有指定类型的最后一个E元素 3
E:only-child 匹配父元素内只包含一个子元素,且该子元素匹配E元素 3
E:only-of-type 匹配父元素内只包含一个同类型的子元素,且该子元素匹配E元素 3
E:empty 匹配没有子元素的元素,且该元素五任何文本节点 3
E:link 匹配未被访问过的超链接 1
E:visited 匹配被访问过的超链接 1
E:active 匹配鼠标已经其上按下、还没有释放的E元素 1
E:hover 匹配鼠标停留其上的E元素 1
E:focus 匹配获得焦点的E元素 2
E:lang(language) 匹配指定了lang属性且值为language的E元素 2
E:not(F) 匹配所欲除F元素外的E元素 3
E:checked 匹配表单中被选中的radio(单选框)或checkbox(复选框)元素 3
E:disabled 匹配表单中禁用的元素 3
E:enabled 表单中激活的元素 3
E:target 匹配文档中特定"id"点击后的效果 3

伪元素选择器

伪元素可用于定位文档中包含的文本,为与伪类进行区分,伪元素使用双冒号 :: 定义,但单冒号 : 也能被识别。

选择器 含义 css
::first-letter 用来选择文本块的第一个字母 1
::first-line 用来选择元素的第一行文本 1
::before和::after 不是指存在标记中的内容,而是可以插入额外内容的位置,需要配合content属性使用 2
::selection 用来匹配突出显示的文本 3

属性选择器

选择器 含义 css
E[attr] 匹配所有具有属性attr的E元素 2
E[attr=val] 匹配具有属性attr,attr值为val的元素,val区分大小写 2
E[attr~=val] 匹配具有属性attr,attr值具有多个空格分隔、其中一个值等于value的元素 2
E[attr*=val] 匹配具有属性attr,attr值的任意位置包含了val的元素 3
E[attr^=val] 匹配具有属性attr,attr值以val开头的任何字符串的元素 3
E[attr$=val] 匹配具有属性attr,attr值以val结尾的任何字符串 3

选择器的优先级是怎样的?

关于优先级的规定,常用的方法是给不同的选择器分配权值:
!important
内联样式
id选择器 100
类选择器 10
伪类选择器 10
属性选择器 10
标签选择器 1
通配符选择器
浏览器自定义

  • 权值较大的优先级越高
  • 权值相同的,后定义的优先级较高
  • 样式值含有!important,优先级最高

后代选择器的定位原则

后代选择器,浏览器是如何查找元素的呢?

浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。
比如DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:先查找html中所有class='red'的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。
浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。

如果遇到一个属性想知道兼容性,在哪查看?

可以去Can I use查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • 简介网络浏览器很可能是使用最广的软件。在这篇入门文章中,我将会介绍它们的幕后工作原理。我们会了解到,从您在地址栏输...
    wengjq阅读 6,353评论 2 15
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 4,990评论 0 1
  • 今天的关键词:人民币创新低,深幅度震荡,黄金。 说说今天上午的大跌,其实也没什么好说的,昨天的文章里已作了详细的分...
    A股油菜花阅读 1,131评论 0 2