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

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

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

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

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

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

这是什么思路?

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

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

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

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

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

它是如何工作的?

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

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

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

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

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

内部范围边界

假设你预计将其他组件放入你的Cards中,所以你不希望.title 选择器针对除属于Card的那个标题之外的任何东西。为此,你在范围上设置了一个内部边界,如下:ruP28资讯网——每日最新资讯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元素内部的任何东西。所以你可以这样构建你的卡片:ruP28资讯网——每日最新资讯28at.com

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

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

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

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

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

近度优先 Proximity precedence

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

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

将以下内容应用于HTML。这里没有内部范围约束,所以两个p选择器都针对这里的内部段落。在这种情况下,内部范围总是优先:ruP28资讯网——每日最新资讯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平台功能标志。ruP28资讯网——每日最新资讯28at.com

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

ruP28资讯网——每日最新资讯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 详解

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • iQOO Neo8 Pro即将开售:到手价3099元起 安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
Top