Chrome 118 的新变化

以下是您有必要知道的信息:

我是 Adriana Jara。我们来深入了解一下 Chrome 118 会为开发者带来哪些新变化。

CSS @scope 规则。

借助 @scope @ 规则,开发者可以将样式规则的作用域限定为给定的范围根,并根据该范围根的邻近度来设置元素的样式。

借助 @scope,您可以根据邻近度替换样式,这与常见的 CSS 样式不同,后者仅根据源代码顺序和特异性应用。以下示例有两个主题。

<div class="lightpink-theme">
  <a href="#">I'm lightpink!</a>
  <div class="pink-theme">
    <a href="#">Different pink!</a>
  </div>
</div>

没有作用域,则应用的样式是最后声明的样式。

不使用 @scope
.pink-theme a { color: hotpink; }
.lightpink-theme a { color: lightpink; }

两个链接,第一个显示“我是浅粉色!”,第二个显示“不同的粉色”,两个链接实际上是浅粉色,链接文字为“来源顺序声明样式”。

使用作用域时,您可以拥有嵌套元素,并且所应用的样式将应用于最近祖先实体。

使用 @scope
@scope (.pink-theme) {
    a {
        color: hotpink;
    }
}

@scope (.lightpink-theme){
    a {
        color: lightpink;
    }
}

两个链接,第一个是“我是浅粉色!”,第二个是“不同粉色”,第二个链接是深粉色,位于链接文本最近的祖先样式下,旁边有一个绿色对勾标记。

此外,Scope 有助于避免编写冗长的类名称,并可让您轻松管理大型项目并避免命名冲突。

不使用 @scope
<div class="first-container">
  <h1 class="first-container__main-title"> I'm the main title</h1>
</div>

<div class="second-container">
  <h1 class="second-container__main-title"> I'm the main title, but somewhere else</h1>
</div>
.first-container__main-title {
  color: grey;
}

.second-container__main-title {
  color: mediumturquoise;
}
使用 @scope
<div class="first-container">
  <h1 class="main-title"> I'm the main title</h1>
</div>

<div class="second-container">
  <h1 class="main-title"> I'm the main title, but somewhere else</h1>
</div>
@scope(.first-container){
  .main-title {
   color: grey;
  }
}
@scope(.second-container){
  .main-title {
   color: mediumturquoise;
  }
}

借助 Scope,您还可以设置组件的样式,而无需设置嵌套在其中的特定内容的样式。在某种程度上,您可以在不适用作用域样式的位置留出“孔”。

如下例所示,我们可以对文本应用样式,并排除控件,反之亦然。

上述 HTML 的表示形式,其中第一个和第三个 div 旁边是范围内的字词,第二个和第四个 div 旁边是已排除的字词。

<div class="component">
  <div class="purple">
    <h1>Drink water</h1>
    <p class="purple">hydration is important</p>
  </div>
  <div class="click-here">
    <p>not in scope</p>
    <button>click here</button>
  </div>

  <div class="purple">
    <h1 class="purple">Exercise</h1>
    <p class="purple">move it move it</p>
  </div>

  <div class="link-here">
    <p>Excluded from scope</p>
    <a href="#"> link here </a>
  </div>
</div>
@scope (.component) to (.click-here, .link-here) {
  div {
    color: purple;
    text-align: center;
    font-family: sans-serif;
  }
}

如需了解详情,请参阅使用 CSS @scope at-rule 限制选择器的覆盖范围一文。

prefers-reduced-transparency 媒体功能

我们使用媒体查询来提供可适应用户的偏好和设备条件的用户体验。此 Chrome 版本新增了可用于调整用户体验的值:prefers-reduced-transparency

您可以使用媒体查询测试一个新值,即 prefers-reduced-transparency;借助该值,开发者可以根据用户选择的偏好设置调整 Web 内容,从而降低操作系统中的透明度,例如 macOS 上的“降低透明度”设置。有效选项为 reduceno-preference

.translucent {
  opacity: 0.4;
}

@media (prefers-reduced-transparency) {
  .translucent {
    opacity: 0.8;
  }
}

您还可以使用开发者工具查看其外观:

如需了解详情,请参阅 prefers-reduced-transparency 文档。

更正:本文之前的版本提到了此版本中新增的 scripting 媒体功能。实际版本为 120。

开发者工具中的“Sources”面板改进

DevTools 在 Sources 面板中有以下改进:workspace 功能提高了一致性,最值得注意的是,通过将 Sources > Filesystem 窗格重命名为 Workspace 以及其他界面文本,您还可以使用 Sources > Workspace 将您在开发者工具中所做的更改直接同步到源文件。

此外,您现在可以通过拖放操作对 Sources 面板左侧的窗格进行重新排序。Sources 面板现在可以美观输出下列脚本类型中的内嵌 JavaScript:moduleimportmapspeculationrules,并突出显示 importmapspeculationrules 脚本类型的语法(两者均保存 JSON)。

对推测规则脚本类型进行美观输出和语法突出显示之前和之后。

如需详细了解 Chrome 118 开发者工具更新,请参阅 开发者工具的新变化

还有更多其他奖励!

当然还有很多。

深入阅读

这里仅介绍一些重要的亮点。如需了解 Chrome 118 中的其他变化,请点击以下链接。

订阅

如需随时了解最新动态,请订阅 Chrome Developers YouTube 频道,每当我们发布新视频时,您都会收到电子邮件通知。

嗨,Adriana Jara!Chrome 119 发布后,我会在这里 告诉大家 Chrome 的新功能!