当前位置:首页 > 科技  > 软件

作用域 CSS 回来了,你知道吗?

来源: 责编: 时间:2023-09-28 10:08:04 441观看
导读几年前,消失的作用域 CSS,如今它回来了,而且比以前的版本要好得多。更好的是,W3C规范基本稳定,现在Chrome中已经有一个工作原型。我们只需要社区稍微关注一下,引诱其他浏览器构建它们的实现,并完成这项工作。这是什么思路?作

c3H28资讯网——每日最新资讯28at.com

几年前,消失的作用域 CSS,如今它回来了,而且比以前的版本要好得多。c3H28资讯网——每日最新资讯28at.com

更好的是,W3C规范基本稳定,现在Chrome中已经有一个工作原型。我们只需要社区稍微关注一下,引诱其他浏览器构建它们的实现,并完成这项工作。c3H28资讯网——每日最新资讯28at.com

这是什么思路?

作用域为CSS带来了两个关键点:c3H28资讯网——每日最新资讯28at.com

  • 更好地控制哪些选择器针对哪些元素(即更好地操作级联)。
  • 一组样式可以基于DOM中的位置覆盖另一组样式。

局部样式允许你在页面上的单个组件内包含一组样式。你可以使用.title选择器,它只在Card组件内工作,并使用另一个.title选择器,它只在 Accordion 中工作。你可以阻止一个组件的选择器针对子组件中的元素,或者如果需要,也可以允许它们到达。c3H28资讯网——每日最新资讯28at.com

你不再需要BEM风格的类名。c3H28资讯网——每日最新资讯28at.com

此外,近度在级联中变成了一等公民。如果两个组件针对同一个元素(具有相同的特异性),内部组件的样式将覆盖外部组件的样式。c3H28资讯网——每日最新资讯28at.com

它是如何工作的?

一切都始于@scope规则和一个选择器,如下:c3H28资讯网——每日最新资讯28at.com

@scope (.card) {  /* 将以下样式局限于`.card`内部 */  :scope {    padding: 1rem;    background-color: white;  }  .title {    font-size: 1.2rem;    font-family: Georgia, serif;  }}

这些样式都限制在.card元素中。:scope是一个特殊的伪类,针对.card元素本身,.title针对标题内部的标题。c3H28资讯网——每日最新资讯28at.com

@scope规则本身不增加这些选择器的特异性,所以它们都是(0, 1, 0)。是的,特异性仍然很重要,但这是好事™️。稍后再说。c3H28资讯网——每日最新资讯28at.com

此时,你可以使用普通的后代选择器来实现这一点。但当你在范围内应用内部边界或在页面上重叠多个范围时,新的、以前不可能的选项开始出现。让我们看看它们是怎么做的...c3H28资讯网——每日最新资讯28at.com

内部范围边界

假设你预计将其他组件放入你的Cards中,所以你不希望.title 选择器针对除属于Card的那个标题之外的任何东西。为此,你在范围上设置了一个内部边界,如下:c3H28资讯网——每日最新资讯28at.com

@scope (.card) to (.slot) {  /* 限定的样式只在`.card`内部,但不在`.slot`内部 */  :scope {    padding: 1rem;    background-color: white;  }  .title {    font-size: 1.2rem;    font-family: Georgia, serif;  }}

把这里的 to 关键字看作 直到:这个范围是从.card到.slot定义的。现在,没有一个局限的选择器会针对Card的.slot元素内部的任何东西。所以你可以这样构建你的卡片:c3H28资讯网——每日最新资讯28at.com

<div class="card">  <h3 class="title">Moon lander</h3>  <div class="slot">    <!-- 局部样式不会针对这里的任何东西! -->  </div></div>

范围的影响受到了限制,使其不针对.slot内的任何东西。这样,你可以嵌套两个范围,每个范围都可以使用相同的通用标题类名,而不会发生冲突。实际上,你可能根本不再需要类名了:c3H28资讯网——每日最新资讯28at.com

@scope (.card) to (.slot) {  h3 {    font-size: 1.2rem;    font-family: Georgia, serif;  }}@scope (.accordion) to (.slot) {  h3 {    font-family: Helvetica, sans-serif;    text-transform: uppercase;    letter-spacing: 0.01em;  }}

你可以在 Card 内部放一个 Accordion,或者在 Accordion 内部放一个Card,它们各自的样式不会发生冲突。c3H28资讯网——每日最新资讯28at.com

这被俗称为 甜甜圈范围,因为范围中有一个洞。(如果内部边界选择器针对多个元素,它也可以有多个洞。)c3H28资讯网——每日最新资讯28at.com

Miriam Suzanne 建议使用这种方式是持续使用data-*属性和属性选择器作为你的范围:c3H28资讯网——每日最新资讯28at.com

@scope ([data-scope='media']) to (:scope [data-scope]) {  /* 限定的样式在这里 */}

近度优先 Proximity precedence

另一个方面是近度的概念:来自内部范围的样式将覆盖来自外部范围的样式。想象你有这样两个范围:c3H28资讯网——每日最新资讯28at.com

@scope (.green) {  p {    color: green;  }}@scope (.blue) {  p {    color: blue;  }}

将以下内容应用于HTML。这里没有内部范围约束,所以两个p选择器都针对这里的内部段落。在这种情况下,内部范围总是优先:c3H28资讯网——每日最新资讯28at.com

<div class="green">  <p>我是绿色的</p>  <div class="blue">    <p>我是蓝色的</p>  </div></div><div class="blue">  <p>我是蓝色的</p>  <div class="green">    <p>但我是绿色的</p>  </div></div>

注意这目前只在Chrome中有效,需要在chrome://flags中启用实验性Web平台功能标志。c3H28资讯网——每日最新资讯28at.com

你可以在DevTools中检查,看到每个范围是如何根据其最近的接近性来覆盖另一个的:c3H28资讯网——每日最新资讯28at.com

c3H28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11849-0.html作用域 CSS 回来了,你知道吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 图文并茂解释 Java JVM、JRE 和 JDK

下一篇: Go 1.21.0 新增标准库 Slices 和 Mps 详解

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
Top