Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WWDC24 - iOS18 下的 WebKit 有哪些更新?

WWDC24 - iOS18 下的 WebKit 有哪些更新?

作者头像
ConardLi
发布于 2024-07-01 06:41:44
发布于 2024-07-01 06:41:44
32700
代码可运行
举报
文章被收录于专栏:code秘密花园code秘密花园
运行总次数:0
代码可运行

大家好,我是 ConardLi

就在刚刚结束的 WWDC24(苹果全球开发者大会)上,带来了诸多亮眼的新功能。

作为 Web 开发者我们最关注的当然就是 WebKit 的更新了,新版本的 WebKit 总计共带来了 48 项新的 Web 平台功能,以及 18 项弃用功能和 174 项错误修复。

下面我们来一起学习下一些我觉得值得关注的内容吧。

CSS - View Transitions API

WebKit 加入了对 View Transitions API 的支持。它提供了一个体验非常好的浏览器 API,可以用来将元素从一个状态动画过渡到另一个状态。基于 CSS View Transitions Module Level 1 规范,引入了一些新的 CSS 属性和伪元素,一起构成了定义过渡动画的规则,并且提供一个新的浏览器 API 来启动过渡动画,并响应不同的过渡状态的变化。

它的工作方式是通过捕获页面的当前的(旧)状态,然后将其动画过渡到新的状态。默认情况下,浏览器会应用一个在状态间的交叉淡入淡出效果。

使用 document.startViewTransition() 方法来启动捕获过程。你可以传递一个回调函数作为第一个参数,来在旧的和新的捕获之间进行 DOM 状态的变化。这个方法会返回一个 ViewTransition 对象,其中包含的 promise 可以用来跟踪视图转换的开始或结束。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const tabLinks = [...document.querySelectorAll('.tabbed-views-demo a')];
const tabPages = [...document.querySelectorAll('.tabbed-views-demo .tab-page')];
tabLinks.forEach(tab => {
    function switchTab () {
        tabPages.forEach(element => element.classList.add('hidden'));
        tabLinks.forEach(element => element.classList.remove('current'));
        let pageid = document.location.href.split('#')[1];
        tab.classList.add('current');
        document.getElementById(pageid).classList.remove('hidden');
    }

    tab.addEventListener('click', (e) => {
        // Feature detect view transitions
        if (document.startViewTransition)
            document.startViewTransition(switchTab);
        else switchTab(); 
    });
    
    if (document.location.href.split('#')[1])
        switchTab();
});

一旦状态被捕获,就会构建一个可以用 CSS 进行定位的伪元素树,你可以通过改变这个 CSS 动画来修改过渡效果。动画从旧的页面状态过渡到新的页面状态可以通过 ::view-transition-new(*)::view-transition-old(*) 选择器来进行修改。另外,你还可以通过为指定元素设置 CSSview-transition-name 属性名称,要求浏览器独立跟踪元素状态的改变。然后,你可以使用伪元素来为其定制动画。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.page-view {
    view-transition-name: page-view;
}
::view-transition-old(page-view) {
    animation: 500ms ease-in-out transition-out-animation;
}
::view-transition-new(page-view) {
    animation: 500ms ease-in-out transition-in-animation;
}

CSS - 样式查询

WebKit 增加了对样式查询(Style Queries)的支持,可以在测试 CSS 自定义属性时使用。样式查询的用法和我们使用 Sass mixins 很相似,都是用来定义一组可重复使用的样式,并将其作为一个整体进行应用。

在以下示例中,如果 --background 自定义属性被设置为黑色,则使标题和段落文本的颜色变为白色。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@container style(--background: black) {
  h2, h3, p {
    color: white;
  }
}

别忘了注意 HTML 结构。默认情况下,样式查询引用的是父元素上的样式,我们可以通过使用容器查询 (Container Query names) 创建不同的引用。

CSS - 背景过滤器

Safari 9.0 中发布的背景滤镜(backdrop filter)为我们提供了一种方式,可以对特定元素后的内容应用图像效果。例如,你可以将 backdrop-filter 应用到标题上,那么标题后的所有内容都将变得模糊,或者饱和度降低,或者对比度增加。你可以使用来自 SVG 的任何滤镜函数,例如 blur()brightness()contrast()drop-shadow()grayscale()hue-rotate()invert()opacity()saturate()sepia()

多年以来,背景滤镜只能在 Safari 中运行。当你在属性名称前添加 -webkit-backdrop-filter前缀时,它才可以使用。

现在,开始于 Safari 18 beta,我们不再需要该前缀了。

现在它在各大浏览器的兼容性都很好。

CSS - content-visibility

WebKit 增加了对 content-visibility 的支持,这个属性用来控制元素是否以有利于性能优化的方式渲染内容。它能让你向浏览器明确表达,页面的某些部分可能最初不在屏幕上,建议先忽略它们,从而不参与首屏的布局和渲染,这样可能会使页面加载更快。

想要详细了解这个属性可以看:只需一行CSS代码,让长列表网页的渲染性能提升几倍以上!

Web API - 空间照片

Apple Vision Pro 上,我们可以享受到的一种体验非常好的浏览空间照片和全景照片的功能。当你在 visionOS 中打开 Photos 应用时,你会看到一组你的照片的集合。点击一张图片,它就会在你面前的一个浮动框架中单独出现,而其他部分的应用则会消失。

这是一种非常好的,全方位的沉浸式体验。

现在在 visionOS 2 betaSafari 18 中,我们可以使用全屏 API 在网页上实现同样的体验。你可以在网页中嵌入照片,并提供点击功能。当前 Safari 窗口消失时,照片会弹出一个浮动的框架。然后,当用户点击 visionOS 提供的空间图片或全景 UI 时,照片会进一步扩展,创造出一个全方位的沉浸式体验。

首先,我们可以使用简单的 HTML 将扁平化的全景照片嵌入网页中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img src="panorama.jpeg" class="go-fullscreen" alt="[description]">

然后,我们将在点击时使用 Javascript 触发 .requestFullscreen()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.querySelectorAll('.go-fullscreen').forEach(element => {
    element.addEventListener('click', async () => {
        await element.requestFullscreen();
    });
});

当然,你可以为用户点击创建你自己的 UI,而不是让整个照片成为点击目标。

空间图像的运行方式完全相同,我们可以使用 picture 元素来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<picture>
    <source srcset="spatial.heic" type="image/heic">
    <source srcset="fallback.avif" type="image/avif">
    <img src="fallback.jpg" class="go-fullscreen" alt="[description]" >
</picture>

这种技术还将导致任何支持全屏 API 的浏览器使图像进入全屏状态。

想要详细了解,可以看看《Optimize for the spatial web》 这个主题。

Web API - WebXR 支持

Safari 18 forvisionOS 2 beta 增加了对沉浸式 WebXR 的支持。现在,我们可以创建完全身临其境的体验,并通过 Apple Vision Pro 在网络上向人们提供这些体验。VisionOS 2 Beta 上的 Safari 支持沉浸式 VR 会话。WebXR 场景使用由 WebGL 驱动的硬件加速图形来显示。

如果我们想制作用户手部的 3D 模型动画,VisionOS 2 Beta 版的 Safari 还支持 WebXR 手部跟踪。为了确保隐私,将在 WebXR 会话开始时向用户请求允许进行手部跟踪的许可。

Build immersive web experiences with WebXR》专题详细介绍了这个话题。

Web API - URL.parse()

WebKit 添加了对新的 URL.parse() 方法的支持,这是一种解析 URL 的方法,当解析失败时,它会返回 null 而不是异常。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Before
let url = null;
try {
  url = new URL(input, base);
} catch(e) { }

// Now
const url = URL.parse(input, base);

安全策略 - 混合内容策略

新版的 WebKit 会通过升级混合内容设置中的被动子资源请求,为所有图像、视频和音频添加了对安全 HTTPS 的支持。这意味着,如果某个网站的某些文件使用 HTTPS 提供,而另一些文件使用 HTTP 提供(称为“混合内容”),则所有图像和媒体现在都将自动升级到 HTTPS,以符合《Mixed Content Level 2》规范的要求。

不过这项能力在 Chrome 中早就提供了,可以看下我之前的文章:Chrome 81 正式发布 !消灭混合内容最后一步~

JavaScript - RegExp 优化

RegExp 中添加了对 Unicode 15.1.0 字符的支持。Unicode 15.1 增加了 627 个字符,使字符总数达到 149,813 个。现在,这些新字符都可以在正则表达式中使用了。

另外还通过 RegExp.prototype[Symbol.matchAll] 添加了对 v 标志的支持。提供更强大的方法来匹配 Unicode 字符,如 ECMAScript 2024 标准中所指定的那样。

例如,我们现在可以指定仅匹配拉丁字符,同时避免匹配西里尔字母字符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const regex = /\p{sc=Latin}/v;
console.log(regex.test('A')); // true, 'A' is a Latin script character
console.log(regex.test('А')); // false, 'А' is a Cyrillic script character

或者分割与表情符号匹配的字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"a 🥰 b 🥰".split(/[\p{Emoji}--\p{ASCII}]/v)// ["a ", " b ", ""]

最后

以上只节选了一些我觉得比较值得关注的更新,想要了解全部更新内容可以看:https://webkit.org/blog/15443/news-from-wwdc24-webkit-in-safari-18-beta/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
探索Dify:开启大语言模型应用开发新时代
在当今科技飞速发展的时代,AI 技术的迅猛发展令人瞩目。从最初简单的图像识别,到如今复杂的自然语言处理,AI 正以前所未有的速度融入我们的生活和工作。大语言模型作为 AI 领域的重要突破,更是成为了众多开发者关注的焦点。它能够理解和生成自然语言,为智能客服、内容创作、智能问答等应用场景提供了强大的支持。
正在走向自律
2025/05/24
2510
探索Dify:开启大语言模型应用开发新时代
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
MaxKB = Max Knowledge Base,是一款基于 LLM 大语言模型的开源知识库问答系统,旨在成为企业的最强大脑。它能够帮助企业高效地管理知识,并提供智能问答功能。想象一下,你有一个虚拟助手,可以回答各种关于公司内部知识的问题,无论是政策、流程,还是技术文档,MaxKB 都能快速准确地给出答案:比如公司内网如何访问、如何提交视觉设计需求等等
汀丶人工智能
2024/08/05
12.3K0
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
LLMOps+DeepSeek:大模型升级一体化运维
蛇年伊始,DeepSeek凭借其卓越表现火爆出圈,让AI大模型瞬间成为街头巷尾热议的焦点,也让大众重新燃起对AGI(通用人工智能)“平民化”的信心,DeepSeek通过先进的模型架构,带来的高效率与低成本优势,加快了应用场景的百花齐放。
嘉为蓝鲸
2025/02/21
9300
LLMOps+DeepSeek:大模型升级一体化运维
详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
这几年,各种新技术、新产品层出不穷,其中,大模型(Large Language Models)作为AI领域的颠覆性创新,凭借其在语言生成、理解及多任务适应上的卓越表现,迅速点燃了科技界的热情。从阿尔法狗的胜利到GPT系列的横空出世,大模型不仅展现了人工智能前所未有的创造力与洞察力,也预示着智能化转型的新纪元。然而,大模型的潜力要真正转化为生产力,实现从实验室到现实世界的平稳着陆,还需跨越理论到实践的鸿沟。
zhouzhou的奇妙编程
2024/06/11
20.5K0
【AI流程应用】智能知识库搭建与实战应用
通过以上步骤,您已成功创建一个能够理解 积木报表 和 JeecgBoot 并智能应答的 AI 机器人。
JEECG
2025/05/21
390
3分钟!教会你用Doris+DeepSeek搭建RAG知识库(喂饭级教程)
❝清晨,我泡上一杯98年的咖啡,打开电脑,收到一条来自Doris用户的消息: "请问有 将doris数据库数据作为deepseek大模型的知识库的方法吗" "好滴,安排!" 于是,和这位Doris用户聊了聊,发现这类需求随着DeepSeek的爆火被无限放大了,但也确实是一个‌引申的机遇与挑战。 也罢,今天就来一探究竟,一起学习学习如何基于Doris+DeepSeek打造你的专属AI助手!
一臻数据
2025/02/26
1K1
3分钟!教会你用Doris+DeepSeek搭建RAG知识库(喂饭级教程)
Jeecg AI流程编排实现
在当今快速发展的AI技术领域中,许多企业和开发者都在寻找高效、灵活的AI解决方案,以满足复杂的业务需求。Manus作为近期一款火爆的AI产品,因其强大的功能而被广泛使用。
JEECG
2025/03/10
930
深度解锁AI私有知识库:用 DeepSeek 和 RAGFlow 打造企业级智能平台
时间过的真快呀,又是一周结束了,最近AI和机器人的热度越来越高,能看到相关话题的文章越来越多。我在想,作为一个普通打工仔,我们能做什么,除了不断问AI生成答案,然后问完解决完就扔在脑后?想必不是长久之计,所以将知识沉淀,搭建一个私人知识库,来辅助自己建立脑中的知识库才是最重要的,今天就来给大家介绍如何利用开源项目打造一款私有AI知识库!
希里安
2025/03/31
5060
深度解锁AI私有知识库:用 DeepSeek 和 RAGFlow 打造企业级智能平台
【重磅】敲敲云零代码 "AIGC应用大模型" 上线了~
敲敲云是一个创新的APaaS(应用平台即服务)零代码平台,结合了AI应用开发和知识库管理,旨在帮助企业快速构建个性化的业务应用。
JEECG
2025/04/15
1470
史上最全!DeepSeek骚操作合集:从部署、开发到知识库搭建
官网繁忙,到底哪里的DeepSeek有空?AI应用构建繁杂,最快要多久?等不及了,DeepSeek啥时候能帮我干活......DeepSeek 最近火得不行,开发者们又惊又喜又担心自己用得慢被甩开差距。
腾讯云开发者
2025/02/25
1.6K1
史上最全!DeepSeek骚操作合集:从部署、开发到知识库搭建
Dify 与 FastGPT 流程编排能力对比分析
在人工智能快速发展的今天,大语言模型(LLM)应用平台正在重塑各行各业的工作流程。其中,Dify 和 FastGPT 作为两款具有重要影响力的工具,凭借各自独特的流程编排能力,为开发者和使用者提供了强大的支持。流程编排的优劣直接影响着应用的效率、灵活性和可扩展性,因此深入理解这两个平台的特点对于选择合适的工具至关重要。
井九
2024/10/12
2.7K0
Dify 与 FastGPT 流程编排能力对比分析
DeepSeek + Ollama + Cherry Studio搭建本地私有知识库
知识库(Knowledge Base)是一个存储和管理知识的系统,通常包含结构化和非结构化的信息,用于帮助用户或系统快速查找和获取相关知识。
AmazingCoder
2025/02/26
3.9K4
ragflow v0.19.0震撼发布!跨语言搜索、全新Agent代码组件、图像直显功能全面升级!
随着AI技术和知识管理的快速发展,Ragflow作为开源RAG(Retrieval-Augmented Generation)流程管理平台,再次迎来强劲升级——v0.19.0版本!本次更新覆盖了跨语言搜索、多语言环境适配、全新Agent组件、图像显示方式革新、集成领先AI模型等重磅功能,同时修复了大量细节问题,提升了开发者和用户体验的方方面面。本文将从核心新特性、功能优化、社区贡献、应用场景切入,深度剖析该版本升级亮点,带你全面了解Ragflow v0.19.0的技术魅力和未来价值!
福大大架构师每日一题
2025/05/26
7170
ragflow v0.19.0震撼发布!跨语言搜索、全新Agent代码组件、图像直显功能全面升级!
【JeecgBoot AIGC】AI模型配置实战指南
源码下载:https://github.com/jeecgboot/JeecgBoot
JEECG
2025/05/29
1640
DeepSeek是如何让运维进入真正的智能运维时代的?
在大模型技术发布之前,智能运维厂商试图通过传统AI算法和规则引擎实现自动化与智能化,却面临诸多瓶颈:模型泛化能力弱、场景适配成本高、知识沉淀效率低,最终导致产品落地效果有限。企业运维团队仍需依赖人工经验处理复杂问题,智能运维始终停留在“辅助工具”阶段。
运维老谭
2025/05/27
1970
DeepSeek是如何让运维进入真正的智能运维时代的?
一个赚过外快的java平台
今天分享一款基于AIGC和低代码引擎的AI低代码平台。他就是JeecgBoot了。在国内JeecgBoot是java开源生态里非常不错的一个项目。如果想深入学习java领域的架构思想,抑或想积累一些项目经验,研究一下JeecgBoot是相当不错的。
BUG弄潮儿
2025/04/19
800
一个赚过外快的java平台
一文读懂!DeepSeek 与 Dify 打造 AI 应用实战指南
在人工智能飞速发展的今天,大模型和相关工具层出不穷,极大地便利了我们的工作与生活。DeepSeek 作为备受瞩目的语言模型,凭借出色性能和广阔应用潜力,深受开发者喜爱。Dify 则是极具创新性的低代码 AI 应用开发平台,打破技术壁垒,让非专业开发者也能轻松构建强大 AI 应用。当 DeepSeek 与 Dify 结合,会碰撞出怎样的火花?今天,我们聚焦 Dify,深入探讨其特性、安装部署流程、与 DeepSeek 的集成方式及丰富应用实践。
章为忠学架构
2025/04/04
4.2K0
一文读懂!DeepSeek 与 Dify 打造 AI 应用实战指南
【DeepSeek版】JeecgBoot低代码 3.7.3 发布,集成DeepSeek实现AI编程
JEECG
2025/02/10
2380
基于知识库快速搭建智能客服问答 Bot
在数字化转型的浪潮中,智能客服系统已成为企业提升客户体验和运营效率的关键工具。Botnow 平台,作为一款集智能体创作与分发于一体的平台,为企业提供了快速搭建智能客服问答 Bot 的一站式解决方案。本文将详细介绍如何利用 Botnow 的知识库功能,结合 RAG(Retrieve-Augmented Generation)方案,快速构建一个智能客服问答 Bot,以提升客户体验和企业效率。
Botnow
2024/08/27
3600
基于知识库快速搭建智能客服问答 Bot
【技术文档AI落地】从0到1教你打造知识问答AI助手
最近,敲敲云推出的AI应用大模型受到了广泛好评。今天,我们将以“积木报表文档助手”为例,探索如何利用敲敲云AI大模型,从零搭建一个专属的知识问答AI客服。
JEECG
2025/05/06
1550
推荐阅读
相关推荐
探索Dify:开启大语言模型应用开发新时代
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验