作者:陈大鱼头

转发链接:https://mp.weixin.qq.com/s/tLD4Rfr2c-MAXXtbC7nEwQ

前言

CSS 选择器是 CSS 世界中非常重要的一环。

在 CSS 2 之后,所有的 CSS 属性都是按模块去维护的。

CSS 选择器也是如此,然而如今也已经发布了第四版 —— CSS Selectors Level 4 ,这一版最早的草案发布于2011年09月29日,最后更新是2018年11月21日。

下面让我们一起来看看 Level 4 新推出的一些选择器。

正文

下面我们按照类型来划分

逻辑组合(Logical Combinations)

在这个分类下,我们有以下四个选择器:

:not()

其实词:not()词不算是新标签,不过在 Level 4 里,增加了多选的功能,代码如下:

/* 除了.left, .right, .top之外所以的div的盒子模型都会变成flex*/div:not(.left, .right, .top) {  display: flex;}/* 等价于 */div:not(.left), div:not(.right), div:not(.top) {  display: flex;}

兼容性如下:

额。。。还不能用

:is()

:is() 伪类将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。这对于以更紧凑的形式编写大型选择器非常有用。

看个例子:

/* 选择header, main, footer里的任意一个悬浮状态的段落(p标签) */:is(header, main, footer) p:hover {  color: red;  cursor: pointer;}/* 等价于 */header p:hover,main p:hover,footer p:hover {  color: red;  cursor: pointer;}

兼容如下:

:where()

:where() 伪类接受选择器列表作为它的参数,将会选择所有能被该选择器列表中任何一条规则选中的元素。

其实就是跟 :is() ,唯一不同的就是 :where() 的优先级总是为 0 ,但是 :is() 的优先级是由它的选择器列表中优先级最高的选择器决定的。

代码如下:

    

:is()-styled links

            

Here is my main content. This contains a link.    

            

Here is my aside content. This also contains a link.                

This is my footer, also containing a link.    

    

:where()-styled links

            

Here is my main content. This contains a link.    

            

Here is my aside content. This also contains a link.                

This is my footer, also containing a link.    

:is():where() 对比效果图如下:

兼容性如下:

:has()

:has() 伪类代表一个元素,其给定的选择器参数(相对于该元素的 :scope)至少匹配一个元素。

:has() 接受一个选择器组作为参数。在当前规范中 :has() 并未列为实时选择器配置的一部分,意味着其不能用于样式表中。

语法如下:

// 下面的选择器只会匹配直接包含  子元素的  元素a:has(> img)// 下面的选择器只会匹配其后紧跟着 

 元素的 

 元素:h1:has(+ p)

兼容性如下:

嗯,全红。。。

语言伪类(Linguistic Pseudo-classes)

:dir()

:dir()伪类匹配特定文字书写方向的元素。在HTML中, 文字方向由dir属性决定。其他的文档类型可能有其他定义文字方向的方法。

:dir() 并不等于使用 [dir=…] 属性选择器。后者匹配 dir 的值且不会匹配到未定义此属性的元素,即使该元素继承了父元素的属性;类似的, [dir=rtl] 或 [dir=ltr]不会匹配到dir属性的值为auto的元素。而 :dir()会匹配经过客户端计算后的属性, 不管是继承的dir值还是dir值为auto的。

例子如下:

      test1      

test2        

עִבְרִית

      

效果如下:

兼容性如下:

又是一片红。。

:lang()

:lang() 伪类基于元素语言来匹配页面元素。

例子如下:

/* 下例表示选择文本语言带有-TN的div元素 (ar-TN, fr-TN). */div:lang(*-TN) {    background-color: green}

浏览器支持状态:没有一个支持的。

位置伪类(Location Pseudo-classes)

:any-link

:any-link 伪类 选择器代表一个有链接锚点的元素,而不管它是否被访问过,也就是说,它会匹配每一个有 href 属性的 、 或 元素。因此,它会匹配到所有的 :link 或 :visited。

例子如下:

External linkInternal target linkPlaceholder link (won't get styled)

效果如下:

兼容性如下:

:local-link

:local-link伪类可以单独格式化本地链接(原文是local links)(内部链接)。

例子如下:

a:local-link {   text-decoration: none;}

效果 & 兼容性

没有一个浏览器是支持的,看不到效果

:target-within

:target-within伪类适用于:target所匹配的元素,以及它DOM节点内所有匹配的元素。

例子如下:

div:target-within {   border: 2px solid black;}

效果 & 兼容性

没有一个浏览器是支持的,看不到效果

:scope

:scope伪类表示作为选择器要匹配的作用域的元素。不过目前它等效于 :root。

因为尚未有浏览器支持CSS的局部作用域。

例子如下:

:scope {   background-color: lime;}

兼容性如下:

浏览器算法不支持,兼容有跟没没区别~

用户行为伪类(User Action Pseudo-classes)

:focus-visible

当元素匹配 :focus 伪类并且客户端(UA)的启发式引擎决定焦点应当可见(在这种情况下很多浏览器默认显示“焦点框”。)时,:focus-visible 伪类将生效。

这个选择器可以有效地根据用户的输入方式(鼠标 vs 键盘)展示不同形式的焦点。

例子如下:

Default styles

:focus only

:focus-visible only

效果如下:

兼容性如下:

目前只有Chrome 67+ 兼容...

:focus-within

:focus-within伪类适用于:focus所匹配的元素,以及它DOM节点内所有匹配的元素。

例子如下:

效果如下:

时间尺寸伪类(Time-dimensional Pseudo-classes)

:current && :past && :future

这个伪类选择器会选择HTML5中

例子如下:

/* Current */:current(p, span) {   background-color: yellow;}/* Past */:past,/* Future */:future {   display: none;}

兼容性如下:

目前没有任何浏览器支持

输入伪类(The Input Pseudo-classes)

:read-only 与 :read-write

:read-only伪类选择器表示当前元素是用户不可修改的。

:read-write伪类选择器表示当前元素是用户可修改的。这个伪类选择器可以使用在一个可输入的元素或 contenteditable 元素(HTML5 属性)。

例子如下:

      1      2

效果如下:

兼容性如下:

:placeholder-shown

:placeholder-shown 伪类 在 或 元素显示 placeholder text 时生效。

例子如下:

效果如下:

兼容性如下:

:default

:default 伪类选择器 表示一组相关元素中的默认表单元素。

该选择器可以在 , , , 以及 上使用。

例子如下:

SpringSummerFallWinter

效果如下:

兼容性如下:

:indeterminate

:indeterminate 伪类选择器表示状态不确定的表单元素。

它支持:

  • 元素,其 indeterminate 属性被JavaScript设置为true 。
  • 元素, 表单中拥有相同 name值的所有单选按钮都未被选中时。
  • 处于不确定状态的 元素

例子如下:

        Background should be green


        Background should be green


效果如下:

兼容性如下:

:valid 与 :invalid

判断有效性的伪类选择器(:valid和:invalid)匹配有效或无效,或

元素。

:valid伪类选择器表示值通过验证的,这告诉用户他们的输入是有效的。

:invalid伪类选择器表示值不通过通过验证的,这告诉用户他们的输入是无效的。

例子如下:

输入文字:输入电话号码:

效果如下:

兼容性如下:

:in-range 与 :out-of-range

如果一个时间或数字具有max或min属性,那么:in-range会匹配到输入值在指定范围内的,:out-of-input则匹配输入值不在指定范围的。如果没有规定范围,则都不匹配。

例子如下:

    

Values between 1 and 10 are valid.                                Your value is             

效果如下:

兼容性如下:

:required 与 :optional

伪类选择器:required和:optional匹配了,, 或元素。

:required表示“必填”

:optional表示“可选”

例子如下:

必填的:可选的:

效果如下:

兼容性如下:

:required 的兼容性在上面有。

:blank

:blank 伪类选择器 用于匹配如下节点:

  1. 没有子节点;
  2. 仅有空的文本节点;
  3. 仅有空白符的文本节点。

有点类似于:empty,但是比:empty宽松,目前还是没有任何一款浏览器支持。

:user-invalid

:user-invalid伪类选择器匹配输入错误的元素。不过跟其它的输入伪类不同的是,它仅匹配用户输入时的错误,而不是静默状态下的错误,这样就会比较人性化,可惜,目前还是没有任何一款浏览器支持。

树型伪类(Tree-Structural pseudo-classes)

:nth-child 与 :nth-last-child

:nth-child 与 :nth-last-child并不是 Level 4 才推出的伪类选择器,但是在 Level 4 李 新增了在元素组里匹配的功能。

语法如下::nth-child/nth-last-child(An + B [of S] ?)

例子如下:

:nth-child(-n+3 of li.important)

上面的例子通过传递选择器参数,选择与之匹配的第n个元素,这里表示li.important中前三个子元素。

它跟以下规则不同:

li.important:nth-child(-n+3)

这里表示的时候如意前三个子元素刚才是li.important时才能被选择得到。

兼容性如下:

网格选择器(Grid-Structural Selectors)

||

|| 组合器选择属于某个表格行的节点。

例子如下:

                                                                        A                  B                  C                                          D                  E                                          F                  G                  

上面的例子可以使C,E 与 G单元格变灰。

很可惜,目前还是没有任何浏览器给予支持。

:nth-col() 与 :nth-last-col()

伪类选择器:nth-col() 与 :nth-last-col()表示选择正向或反向的表格行的节点。

语法和:nth-child 与 :nth-last-child类似,只不过它是选择表格内的元素。

目前还是没有任何浏览器支持。

最后

总结

以上便是CSS选择器 Level 4 里新出的所有选择器,其实都是非常有用的,虽然有些选择器的浏览器支持度并不乐观的。

希望各大浏览器厂商可以赶快增加对它们的支持吧。

推荐CSS学习相关文章

如何用一行 CSS 实现 10 种现代布局?

rem适配移动端的原理及应用场景

「干货」纯CSS实现瀑布流(Masonry)

手把手教你CSS grid布局「香」

手把手教你20个CSS 快速提升技巧

细品100道CSS知识点(上)「干货满满」

细品100道CSS知识点(下)「干货满满」

手把手教你CSS Flex布局「真香」

细品用SVG实现一个优雅的提示框

手把手整理CSS3知识汇总【思维导图】

手把手教你55 个提高CSS 开发效率的必备片段

手把手教你常见的CSS布局方式【实践】

让CSS flex布局最后一行左对齐的N种方法

妙用CSS变量,让你的CSS变得更心动

纯CSS实现简单骨骼动画【实践】

CSS揭秘实用技巧总结

你未必知道的49个CSS知识点

深入浅出超好用的 CSS 阴影技巧

关于前端CSS写法104个知识点汇总(一)

关于前端CSS写法104个知识点汇总(二)

前端开发规范:命名规范、html规范、css规范、js规范

CSS变量实现暗黑模式,我的小铺页面已经支持

深入浅出CSS中彻底搞懂word-break、word-wrap、white-space

深入浅出详细讲解CSS 渲染原理以及优化策略

手把手教你深入CSS实现一个粒子动效的按钮

手把手教你css 中多种边框的实现小窍门【实践】

手把手详细教你优化CSS提高网站加载速度的21种方法汇总【实践】

作者:陈大鱼头

转发链接:https://mp.weixin.qq.com/s/tLD4Rfr2c-MAXXtbC7nEwQ

name选择器_这33个超级好用的CSS选择器,你可能见都没见过相关推荐

  1. 地图选择器怎么用_简易数据分析 15 | Web Scraper 高级用法——CSS 选择器的使用....

    [ 这是简易数据分析系列的第 15 篇文章 ] 年末事情比较忙,很久不更新了,后台一直有读者催更,我看了一些读者给我的私信,发现一些通用的问题,所以单独写篇文章,介绍一些 Web Scraper 的进 ...

  2. 高校二手交易代码_@21考研er:985高校捡漏指南!这些专业去年都没招满!!

    大部分考研er都有名校梦,985.211院校成为许多同学追逐的目标. 可能大家会觉得名校的生源一定非常充足,但其实有许多985院校每年都有专业因为一志愿考生上线不足或复试合格不足而需要接收调剂生. 2 ...

  3. css选择器的应用的实验,HTMLCSS实验(3)---掌握CSS选择器的使用方法

    [实验题目]HTML&CSS实验(3) [实验目的]掌握CSS选择器的使用方法. ----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直 ...

  4. CSS选择器有哪几种?举例轻松理解CSS选择器

    CSS选择器汇总(清爽版) 1.元素选择器 标签名{ } 2.id选择器 #id属性值{ } 3.类选择器 ·class属性值{ } 4.选择器分组(并集选择器) 作用:通过它可以同时选中多个选择器对 ...

  5. 微信小程序多项选择器_微信小程序三级联动之多列选择器

    有些时候,三级联动业务场景并不只是全国地区选择,可能还涉及到自定义分类的三级联动,这时就需要使用微信的多列选择器. 如果只是一列字段,或者每次拖动一次都去服务端取,会比较容易. 如果想一次定义好jso ...

  6. 安卓自定义时间选择器_微信小程序拾色器(颜色选择器)组件

    点击上方"极客小寨",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 大家好,我是独立开发者东东,如今在web项目中不少地方需要用到颜色选择器,比如设置 ...

  7. 机器人鸣人是哪一集_火影里的五个机器人,第一个比鸣人还厉害,机器丁次你都没见过...

    火影虽然是一部讲述众多忍者们的热血故事,但是火影里的时代并不是和古代一样,里面的生活是和现在的我们一样,在动漫里的忍者也是住的高楼,随时打电话,生病了也要去医院,也会肚子饿,也要一天三顿饭.只是火影里 ...

  8. 打开黑色_表哥出差带回来一箱苹果,打开后发现是黑色的,大家表示都没见过...

    说到水果我想每个人都有一种或者几种爱吃的水果吧?水果口感酸甜,深受广大食客的喜爱,而且常吃水果还可以补充人体的所需的营养物质,从而调节人体的营养均衡,尤其是到了冬季天气比较干燥多吃一些水果还可以补充更 ...

  9. 为什么amd显卡便宜却买的人少_为什么这三张显卡没人用? 性能高居榜首, 却无人问津? 网友: 我都没见人提过...

    最近峰哥网上冲浪时,看到网友提问,图中AMD的三款显卡怎么没有人用甚至都很少有人提起. 其实根据AMD这3款显卡在显卡天梯图中的位置,就可以说明它们是旗舰类型的显卡,它们的性能自然不必多说,AMD显卡 ...

最新文章

  1. JDK10 EA版特性速览
  2. 找不到网卡eth0的解决方法
  3. 算法踩坑6-二叉搜索树排序
  4. Linux 父进程 子进程 回收,回收 fork() 的子进程
  5. AV1为何有信心打败H.265?
  6. c++桥接模式bridge
  7. 《七步掌握业务分析》读书笔记六
  8. STM32——DMA
  9. php中文删除乱码部分,PHP中文乱码解决办法
  10. Python 数据科学手册 5.7 支持向量机
  11. 【mysql union all limit的使用】
  12. C# int转string 每三位加一个逗号
  13. 第15届创新英语大赛初赛第二阶段题目
  14. Quartz 知识点汇总
  15. js分割字符串的方法
  16. Excel表格常用函数
  17. 你依然是我心中最美丽的彩虹
  18. IOS视频开发之MPMoviePlayerController
  19. Ansible:遇到错误 sudo: /etc/sudoers is world writable\r\nsudo: no valid sudoers sources found, quitting
  20. 微信企业号支付授权目录

热门文章

  1. 削减成本同时,多数企业仍计划增加云计算投入
  2. python模块--Beautifulsoup
  3. SQL中distinct的用法(四种示例分析)
  4. 【Swift】自定义控件无限轮播 + 无限图片轮播
  5. 在线编辑器 上传控件
  6. 图像处理之基础---周末戏说卷积
  7. 数据库连接类 DB.class.php
  8. 负载过高之外网抓数据
  9. 在fvwm中将右手习惯改为左手习惯的简单办法
  10. 笨方法python3_“笨方法”学Python3,习题 41 。