5分钟读懂css伪类选择器:is :not

:not
The :not() CSS pseudo-class represents elements that do not match a list of selectors. Since it prevents specific items from being selected, it is known as the negation pseudo-class.
以上是MDN对not的解释
推荐学习:CSS视频教程
单从名字上我们应该能对它有大概的认知,非选择,排除括号内的其它元素
最简单的例子,用CSS将div内,在不改变html的前提下,除了P标签,其它的字体颜色变成蓝色,
<div> <span>我是蓝色</span> <p>我是黑色</p> <h1>我是蓝色</h2> <h2>我是蓝色</h2> <h3>我是蓝色</h3> <h4>我是蓝色</h4> <h5>我是蓝色</h5> </div>
之前的做法
div span,div h2,div h3, div h4,{ color: blue; }not写法
div:not(p){ color: blue; }从上面的例子可以明显体会到not伪类选择器的作用
下面升级一下,问:将div内除了span和p,其它字体颜色变蓝色
div:not(p):not(span){ color: blue; }还有更为简洁的方法,如下,但是目前兼容不太好,不建议使用
div:not(p,span){ color: blue; }兼容
除IE8,目前所有主流浏览器都支持,可以放心使用
:is
The :is() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list. This is useful for writing large selectors in a more compact form.
以上是MDN的解释
在说is前,需要先了解一下matches
matches跟is是什么关系?
matches是is的前世,但是本质上确实一个东西,用法完全一样
matches这个单词意思跟它的作用非常匹配,但是它跟not作用恰好相反,作为not的对立面,matches这个次看起来确实格格不入,而且单词不够简洁,所以它被改名了,这里还有一个issue https://github.com/w3c/csswg-drafts/issues/3258,也就是它改名的源头
好了,现在知道matches和is其实是一个东西,那么is的用法是怎样的呢?
举例:将header和main下的p标签,在鼠标hover时文字变蓝色
<header> <ul> <li><p>鼠标放上去变蓝色</p></li> <li><p>鼠标放上去变蓝色</p></li> </ul> <p>正常字体</p> </header> <main> <ul> <li><p>鼠标放上去变蓝色</p></li> <li><p>鼠标放上去变蓝色</p></li> <p>正常字体</p> </ul> </main> <footer> <ul> <li><p>正常字体</p></li> <li><p>正常字体</p></li> </ul> </footer>
之前的做法
header ul p:hover,main ul p:hover{ color: blue; }is写法
:is(header, main) ul p:hover{ color: blue; }从上面的例子大概能看出is的左右,但是并没有完全体现出is的强大之处,但是当选择的内容变多之后,特别是那种层级较多的,会发现is的写法有多简洁,拿MDN的一个例子看下
之前的写法
/* Level 0 */ h1 { font-size: 30px; } /* Level 1 */ section h1, article h1, aside h1, nav h1 { font-size: 25px; } /* Level 2 */ section section h1, section article h1, section aside h1, section nav h1, article section h1, article article h1, article aside h1, article nav h1, aside section h1, aside article h1, aside aside h1, aside nav h1, nav section h1, nav article h1, nav aside h1, nav nav h1 { font-size: 20px; }is写法
/* Level 0 */ h1 { font-size: 30px; } /* Level 1 */ :is(section, article, aside, nav) h1 { font-size: 25px; } /* Level 2 */ :is(section, article, aside, nav) :is(section, article, aside, nav) h1 { font-size: 20px; }可以看出,随着嵌套层级的增加,is的优势越来越明显
说完了is,那就必须认识一下any,前面说到is是matches的替代者,
any跟is又是什么关系呢?
是的,is也是any的替代品,它解决了any的一些弊端,比如浏览器前缀、选择性能等
any作用跟is完全一样,唯一不同的是它需要加浏览器前缀,用法如下
:-moz-any(.b, .c) { } :-webkit-any(.b, .c) { }结论
通过上面的介绍大概讲述了css伪类is,not,matches,any它们三者的关系
is+not组合是大势所趋
本文来自PHP中文网,CSS教程栏目,欢迎学习
以上就是5分钟读懂css伪类选择器:is :not的详细内容,更多内容请关注技术你好其它相关文章!
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
相关资讯
-
java自定义错误异常$vo['category_id']]); ?>" class="category">后端 互联网 19-11-14 -
Java集合类框架的基本接口有哪些?$vo['category_id']]); ?>" class="category">后端 互联网 19-11-14 -
PHP中自动加载原理以及__autoload的使用教程$vo['category_id']]); ?>" class="category">后端 互联网 19-11-13 -
什么是java手机java手机是以linux为主,采用了linux+java方式来运行应用程序的手机。手机软件由java语言开发,就称为java功能手机,它运行的应用程序都是以*.jar结尾的可执行文件。
$vo['category_id']]); ?>" class="category">后端 互联网 19-11-13 -
notepad 怎么运行python$vo['category_id']]); ?>" class="category">工具 互联网 19-11-2 -
python爬虫爬网页时遇到网页重定向怎么办$vo['category_id']]); ?>" class="category">后端 互联网 19-6-28 -
php8具体发布时间表一览!PHP 8计划于2020年12月的第一周发布!Alpha的第一个版本已于2020年6月发布。像往常一样,这是查找错误,要求更改的好时机,并且仍有很短的时间可以提交您的更新。
$vo['category_id']]); ?>" class="category">后端 互联网 20-7-8 -
python 正则表达式获取字符串中所有的日期和时间这篇文章主要介绍了python 正则表达式获取字符串中所有的日期和时间,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下提取日期前的处理1.处理文本数据的日期格式统一化12345
$vo['category_id']]); ?>" class="category">后端 官网 20-11-29 -
php获取远程图片并下载保存到本地的方法分析这篇文章主要介绍了php获取远程图片并下载保存到本地的方法,结合实例形式对比分析了php基于curl与缓存操作获取远程图片及图片保存的相关操作技巧,需要的朋友可以参考下本文实例讲述了php获取远程图片
$vo['category_id']]); ?>" class="category">后端 官网 20-11-29 -
深入Storyteller:实时协同Tutorial编辑器$vo['category_id']]); ?>" class="category">后端 玉刚说 20-11-27