Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Chrome 115 有哪些值得关注的新特性?

Chrome 115 有哪些值得关注的新特性?

作者头像
ConardLi
发布于 2023-08-23 05:28:01
发布于 2023-08-23 05:28:01
39200
代码可运行
举报
文章被收录于专栏:code秘密花园code秘密花园
运行总次数:0
代码可运行

今天带大家一起来了解一下 Chrome 115 值得关注的新特性。

滚动动画

用滚动驱动的动画是网站上非常常见的用户体验模式,比如当页面向前或向后滚动时,对应的动画也会向前或向后移动。

比如下面图中这种比较常见的,页面顶部的进度条随着滚动而变化:

另外还可以依靠页面滚动来驱动页面上的元素淡入淡出:

一项新的 Scroll-driven Animations 规范定义了两种可供我们使用的新时间线类型:

  • Scroll Progress Timeline: 链接到滚动容器沿特定轴的滚动位置的时间线。
  • View Progress Timeline: 链接到特定元素在其滚动容器内的相对位置的时间线。

下面是一个代码示例,它使用匿名的滚动进度时间轴创建固定在页面顶部的阅读进度指示器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
  <div id="progress"></div>
  你好,code 秘密花园
</body>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@keyframes grow-progress {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

#progress {
  position: fixed;
  left: 0; top: 0;
  width: 100%; height: 1em;
  background: red;

  transform-origin: 0 50%;
  animation: grow-progress auto linear;
  animation-timeline: scroll();
}

另外我们也可以使用 JavaScript 来创建一个滚动进度时间线,我们可以创建一个新的 ScrollTimeline 实例,它接受以下两个参数:

  • source:对要跟踪其滚动条的元素的引用,用于 document.documentElement 定位根滚动条。
  • axis:确定要跟踪的轴,与 CSS 变体类似,可接受的值为 block、inline、x、y
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const tl = new ScrollTimeline({
  source: document.documentElement,
});

要将其附加到 Web 动画,可以将它作为时间轴属性传递,并省略任何 duration 属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$el.animate({
  opacity: [0, 1],
}, {
  timeline: tl,
});

下面是使用 JavaScript 来创建阅读进度指示器对应的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const $progressbar = document.querySelector('#progress');

$progressbar.style.transformOrigin = '0% 50%';
$progressbar.animate(
  {
    transform: ['scaleX(0)', 'scaleX(1)'],
  },
  {
    fill: 'forwards',
    timeline: new ScrollTimeline({
      source: document.documentElement,
    }),
  }
);

CSS display 多值语法

CSS Display Module Level 3 描述了 display 属性的多关键字语法,也可以称为 “双值语法” 或 “多值语法”。

我们最开始学习的 CSS 之一就是一些元素是块级元素,一些元素是内联元素。例如 <h1><p> 默认是块级元素,<span> 是内联元素。使用 display 属性,我们可以在块和内联之间切换。例如,要使标题内联,我们可以使用以下 CSS:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
h1{
  display:inline;
}

最近,CSS 又相继支持了 GridFlexbox 布局。要使用这些布局,我们也要使用 display 属性的值 —— display:griddisplay:flex。只有当 display 的值改变时,子元素才会成为 GridFlex 元素,并开始响应 GridFlexbox 规范中的其他属性。改变元素的 display 值会改变其直接子级的格式化上下文。

但是,GridFlexbox 元素有内部和外部的 display 类型。外部的 display 类型描述元素是块级还是内联,内部的显示类型描述容器中的子元素应该如何表现。

因此,display 多关键字语法允许分别指定内外两个 display 类型。简单来说,它允许我们这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
display: block flex;

创建一个块级容器,具有 Flex 子元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
display: inline flex;

创建一个内联容器,具有 Flex 子元素。

而这个新语法也会向后兼容以前的单关键字语法。

Fenced Frames

在很多业务场景中,我们可能会使用 iframe 去嵌入一些智能推荐的广告。

我们的顶级站点可以读取到 iframesrc 属性,这就意味着顶级站点可以从广告的 URL 推断有关访问者兴趣的信息,这在一定程度上就泄露了用户隐私。

Fenced frames 是一项隐私沙盒提案(https://github.com/WICG/fenced-frame),它建议顶级站点应该对数据进行分区。

使用 Fenced frames ,我们依然可以显示与访问者兴趣相匹配的广告,但顶级站点是无法从 framesrc 属性中推断出用户的兴趣信息的,这个信息只有广告商知道。

常规的用法和 iframe 一样,我们可以用 src 属性来引入一个嵌入的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<fencedframe src="conardli.html"></fencedframe>

另外 Fenced frames 可能会和其他的 隐私沙盒 的 API 来配合使用,浏览器可能会为 Fenced frames 生成一个不透明的 URL

例如,配合 FLEDGE,浏览器可以生成一个 urn:uuid,来映射智能广告推荐的 URL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<fencedframe src="urn:uuid:c36973b5-e5d9-de59-e4c4-364f137b3c7a" mode="opaque-ads" ></fencedframe>

只有在 Fenced frames 内部嵌入的广告商的站点才能获取到 urn:uuidURL 的真实映射关系,外部的顶级站点是获取不到的。

WebAssembly 编译限制

Chrome 将主线程上同步 WebAssembly 编译的大小限制从 4KB 扩展到了 8MB。这无疑是一个巨大的提升,得益于 WebAssembly 运行时 V8 的性能改进。

8MB 限制是通过对 Google Pixel 1 手机的性测试确定的,该手机目前被认为是具有代表性的低端手机。V8 或硬件的未来发展可能会进一步的扩展这个限制。大于 8MBWebAssembly 模块可以使用 WebAssembly.compile() 异步编译,也可以在 Worker 上同步编译。

而大部分的 WebAssembly 模块都可以在主线程的同步方式直接编译,而不需要异步或借助 Worker 线程。

最后

大家怎么看?欢迎在评论区留言!

参考:

  • https://chromestatus.com/features#milestone%3D115
  • https://developer.chrome.com/docs/privacy-sandbox/topics/overview/
  • https://developer.chrome.com/origintrials/#/view_trial/1196831600973709313
  • https://developer.chrome.com/docs/privacy-sandbox/fenced-frame/
  • https://drafts.csswg.org/scroll-animations-1/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2020年你不应该错过的CSS新特性
@argyleink在第四次的伦敦(LondonCSS 2020)CSS活动中分享了一个有关于CSS特性相关的话题。看了一下这个主题的PPT,里面有些新东西还是蛮有意思的。基于该PPT,我稍微整理近24个CSS方面的新特性,感兴趣的同学可以继续往下阅读。
童欧巴
2020/11/02
1.2K0
2020年你不应该错过的CSS新特性
前沿动态 | 带你提前体验CSS未来的新特性
本篇文章,Rachel Andrew将会带着大家了解下浏览器在CSS方面的未来动向, 例如Flexbox行和列布局支持gap间隙属性的标准。
前端达人
2019/01/12
1.7K0
前沿动态 | 带你提前体验CSS未来的新特性
革命性创新,动画杀手锏 @scroll-timeline
在 CSS 规范 Scroll-linked Animations 中,推出了一个划时代的 CSS 功能。也就是 -- The @scroll-timeline at-rule,直译过来就是滚动时间线。
Sb_Coco
2022/03/10
1K0
革命性创新,动画杀手锏 @scroll-timeline
看完了 2021 CSS 年度报告,我学到了啥?
大家好,我是 ConardLi,一年一度的 CSS年度报告 如期而至,我挑了一些我感兴趣的部分,和我一起来看看吧~
ConardLi
2021/12/21
8550
看完了 2021 CSS 年度报告,我学到了啥?
fencedframe 可以替代 iframe 吗?
今天继续聊 浏览器策略 ,这是我 「浏览器策略解读」 专栏的第 35 篇文章了,感谢读者们一如既往的支持!
ConardLi
2022/05/23
2.4K0
fencedframe 可以替代 iframe 吗?
2017年值得学习的3个CSS特性
原文:https://bitsofco.de/3-new-css-features-to-learn-in-2017 译文:http://caibaojian.com/3-new-css-features-to-learn-in-2017.html 译者:前端开发博客(蔡宝坚)
前端开发博客
2020/11/05
7430
2017年值得学习的3个CSS特性
冷门又好用的 CSS 特性
CSS 提供了对多列布局的支持。支持设置布局中的列数 (column-count)、内容应如何列之间的流动规则、列之间的间距 (column-gap) 以及列分割线(column-rule)的样式。
MudOnTire
2022/03/22
1.5K0
冷门又好用的 CSS 特性
这些CSS的新特性还是有必要进来瞧瞧的
在能用CSS实现的就不用麻烦JavaScript[1]文章提及到滚动捕捉的特性,更多有关于容器滚动方面的CSS新特性其实还有有很多个,比如:
前端达人
2021/10/21
8140
【CSS——效果实现】动态的 Tab 栏(蓝桥杯真题-6180)【合集】
选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。
Rossy Yan
2025/02/18
570
【CSS——效果实现】动态的 Tab 栏(蓝桥杯真题-6180)【合集】
CSS 中 关于 Overflow ,你需要了解的这些知识点!
在CSS中,当一个元素的内容太大而无法容纳时,我们可以对其进行控制。该元素的属性是overflow,它是overflow-x和overflow-y属性的简写形式。
前端小智@大迁世界
2020/05/29
5.6K0
CSS 中 关于 Overflow ,你需要了解的这些知识点!
CSS 实用新特性:交互、组件、效率的革新
本文将盘点与解析 CSS 的实用新特性,结合技术原理、应用场景和开发实践。从重塑交互体验,到强化组件功能,再到全面优化开发流程,这些新特性不仅显著提升了开发者的工作效率,还为用户带来了更加流畅、互动性更强的网页体验。
球球的前端奶茶屋
2025/04/09
870
CSS 实用新特性:交互、组件、效率的革新
超级实用!,掌握这9个鲜为人知的CSS属性
虽然许多开发人员熟悉常用的CSS属性,但也有一些较为陌生的属性可能被忽视了。在本文中,我们将探讨10个你可能没有使用过的CSS属性。
前端小智@大迁世界
2023/08/16
5400
基于uniapp+vue3多端h5+小程序+App端直播商城
uniapp-welive一款基于uni-app+vue3+pinia+vk-uview等技术搭建跨端仿抖音直播商城项目。
andy2018
2024/01/02
8100
【动画进阶】当路径动画遇到滚动驱动!
在一年前,我介绍了 CSS 中非常新奇有趣的一个新特性 -- @scroll-timeline:革命性创新,动画杀手锏 @scroll-timeline。
Sb_Coco
2023/09/15
6360
【动画进阶】当路径动画遇到滚动驱动!
CSS Houdini:用浏览器引擎实现高级CSS效果
Houdini被称之为Magic of styling and layout on the web,看起来十分神秘,但实际上,Houdini并非什么神秘组织或者神奇魔法,它是一系列与CSS引擎相关的浏览器API的总称。
2020labs小助手
2022/07/11
8310
25个每个开发人员都应该知道的CSS 技巧
CSS(层叠样式表)是 Web 开发人员必不可少的工具,可让你精确地设置 HTML 元素的样式。但是,掌握 CSS 不仅仅需要了解基础知识。以下 25 个 CSS 技巧可以让您的生活更轻松,代码更简洁。
winty
2024/06/13
2140
25个每个开发人员都应该知道的CSS 技巧
2022 年前端大事记
去年我总结了 2021 年 JavaScript 大事记 之后,最近好多小伙伴催更我的 2022 年总结,这就来了。
ConardLi
2023/01/09
1.3K0
2022 年前端大事记
【干货】使用 CSS Scroll Snap 优化滚动,提升用户体验!
最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。
前端小智@大迁世界
2021/01/14
2.1K0
【干货】使用 CSS Scroll Snap 优化滚动,提升用户体验!
CSS进阶知识
background:bg-color bg-image bg-repeat bg-attachment bg-position/bg-size;
老猫-Leo
2023/12/11
2440
CSS进阶知识
小智在这3年开发中遇到的 CSS 问题及解决方案,有大佬帮他总结好了 !
在浏览器中实现用户界面时,请尽可能减少浏览器带来的差异,以使用户界面具有可预测性。 跟踪所有这些差异很困难,因此,我整理了一些常见问题及其解决方案方便大家查看。
前端小智@大迁世界
2020/06/16
3.8K0
小智在这3年开发中遇到的 CSS 问题及解决方案,有大佬帮他总结好了 !
推荐阅读
相关推荐
2020年你不应该错过的CSS新特性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验