所有分类
  • 所有分类
  • 后端开发
CSS3新选择器大揭密:is() vs where(),码字神器来袭

CSS3新选择器大揭密:is() vs where(),码字神器来袭

的优先级是由它的选择器列表中优先级最高的选择器决定的。同样是将选择器列表作为其参数,并选择可以由该列表中的选择器之一选择的任何元素。的优先级是由它的选择器列表中优先级最高的选择器决定的。选择器都是合理的:的优先级是由它的选择器列表中优先级最

认识逻辑选择器

CSS3新选择器大揭密:is() vs where(),码字神器来袭

:is(header, main, footer) p:hover {
  color: red;
  cursor: pointer;
}

新出炉的CSS3,为我们带来了四个新“小兄弟”called: is(), where(), not(), has().有了他们,调节元素风格变得更加简单,码字速度也能提升!

CSS3新选择器大揭密:is() vs where(),码字神器来袭

div i

p i

div span

p span

h1 span

h1 i

:is()选择器的应用

div span,
div i,
p span,
p i {
    color: red;
}

以前,想搞个通用样式给多种父元素下面的同类型子元素,可得费劲巴拉地敲半天 CSS 代码啊;现在,有个:is()这个超好用的选择器,只需要简简单单一句话就搞定了!比如说,原来的 div :is(p)现在就能简化为 dive p,感觉整个代码都清爽多了。

:is(div, p) :is(span, i) {
    color: red;
}

CSS3新选择器大揭密:is() vs where(),码字神器来袭

那个div:is(p,#text-id)这种选择器内有个id选项,也就是说它选的东西是按id权重来配的。而且目前(《2022-04-28》更新呐)的大部分浏览器都支持这个强大的选择符喔!放心大胆儿在项目中用吧~

ol ol ul,     ol ul ul,     ol menu ul,     ol dir ul,
ol ol menu,   ol ul menu,   ol menu menu,   ol dir menu,
ol ol dir,    ol ul dir,    ol menu dir,    ol dir dir,
ul ol ul,     ul ul ul,     ul menu ul,     ul dir ul,
ul ol menu,   ul ul menu,   ul menu menu,   ul dir menu,
ul ol dir,    ul ul dir,    ul menu dir,    ul dir dir,
menu ol ul,   menu ul ul,   menu menu ul,   menu dir ul,
menu ol menu, menu ul menu, menu menu menu, menu dir menu,
menu ol dir,  menu ul dir,  menu menu dir,  menu dir dir,
dir ol ul,    dir ul ul,    dir menu ul,    dir dir ul,
dir ol menu,  dir ul menu,  dir menu menu,  dir dir menu,
dir ol dir,   dir ul dir,   dir menu dir,   dir dir dir {
  list-style-type: square;
}

:is(ol, ul, menu, dir) :is(ol, ul, menu, dir) :is(ul, menu, dir) {
  list-style-type: square;
}

:where()选择器的特点

div p::before,
div p::after {
    content: "";
    //...
}

div p:is(::before, ::after) {
    content: "";
    //...
}

跟: is()一样: where()也能根据你指定的条件挑出对应的元素。但是,它会先把自己的优先级调到最低,然后再去看你设的哪些条件更重要,就选择谁啰!

    

where & is test

    

where & is test

这俩伙伴能搭配起来用,给你提供丰富多样的样式选择。说到底,无论是:is()或:where(),都是挺实用的,能帮忙咱们轻松搞定样式管理。

div .test-class {
    color: red;
}

div :is(p) {
    color: blue;
}

探究:not()选择器

今儿咱们说说这个:not()选人器。你别小瞧这家伙,它在css样式表中可是很重要滴。在CSS Selectors第三代(就是那个很长的数字)时,它只能挑单个东西,但到了第四代,它瞬间变得厉害了,能够选多个人物了。而且,跟我们以前讲过的其他选人器比起来,:not()并不会直接改变它选人的顺序,还是按照原来那套,看谁的地位更高就选谁哈。

div :is(p, #text-id) {
    color: blue;
}

div p {
    color: blue;
}
div #text-id {
    color: blue;
}

你知道吗?当我们遇到特殊情况需要清理数据的时候,”not()”这个神奇的运算符就能派上大用场!但是要注意,别让它变得太复杂,否则可能会拖慢整个程序的进度。

深入理解:focus-visible伪类

这所谓的:focus-visible伪类其实就是为那些能用键盘使元素变明亮的触发焦点一刻准备的哟。那么如果你想了解只有在设置了:focus-visible的浏览器里,鼠标点击才能出现焦点这种特色的话,那就试试看:focus:not(:focus-visible)!

:is(div, p) span {}
// 等同于
:-webkit-any(div, p) span {}
:-moz-any(div, p) span {}
:matches(div, p) span {}

这个功能可是网页浏览体验的大帮手,就算你用的不是那种支持:focus-visible属性的浏览器,也会觉得很顺手。运用好:focus-visible伪类,你的网页使用会更加流畅!

CSS3新选择器大揭密:is() vs where(),码字神器来袭

应用场景:has()伪类

:where(header, main, footer) p:hover {
  color: red;
  cursor: pointer;
}

就是用这种div:has(.g-test-has)找法,找到那些在老爸底下挂着这特别class的小朋友们,就跟照妖镜似的!但注意,这里找到的是他们所处的位置,而并不是他们本身哦~

header p:hover,
main p:hover,
footer p:hover {
  color: red;
  cursor: pointer;
}

只要用上has()伪类,我们就不怕CSS那个烦人的父元素选择难题,开发起来轻松自如得多!如此强大又便捷的功能,让我们的前端工作速度快了不是一点点呀。

:is(div) p {
    color: red;
}
:where(div) p {
    color: green;
}

结合应用案例

虽然,你要是学着给HTML结构加点儿复杂逻辑伪类的味道,那可能会遇到点儿麻烦最多就是颜色变得很瞎,比如那个有斜杠的:not(p)选错好多元素,看着就不舒服。再看看那个:hover:not(:hover-visible),你必须得小心点儿用,不然搞不好会搞出一些稀奇古怪的效果出来

说到底,逻辑伪类这个东东还是得看具体情况,别瞎弄或者太麻烦,免得出岔子影响网页速度。

    

where & is test

总结与展望

:is(div) p {
    color: red;
}
:where(#container) p {
    color: green;
}

看看这个,我给你讲讲CSS3的新玩意儿——:is(),:where(),:not(),:has()。它们能让前端变得有趣又好用,就像是锦上添花!

期待网络科技再给力点儿,让CSS在逻辑伪类上有所创新,这样我们设计网页布局就更容易了!

/* 组合*/
:is(h1,h2) :where(.test-a, .test-b) {
  text-transform: uppercase;
}
/* 嵌套*/
.title:where(h1, h2, :is(.header, .footer)) {
  font-weight: bold;
}

原文链接:https://www.icz.com/technicalinformation/web/2024/04/14418.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?