写点什么

谷歌的“Web UI 新功能”演讲:更少的自定义组件 JavaScript,更多的 Web 标准

  • 2025-06-10
    北京
  • 本文字数:1373 字

    阅读完需:约 5 分钟

大小:533.50K时长:03:02
谷歌的“Web UI新功能”演讲:更少的自定义组件JavaScript,更多的Web标准

Una Kravets最近在一次演讲中介绍了Chrome团队支持的Web UI的最新发展。一些目前需要大量 JavaScript 的常见 UI 模式可能,很快就会以声明式的方式实现,使用 HTML 和 CSS 的新特性,使用更少的自定义 JavaScript,并内置无障碍功能。

 

演讲重点介绍了三种特别棘手的 UI 模式:可定制的选择菜单、轮播图和悬停卡片。所有这三种 UI 模式在设计系统中都很常见,需要许多 JavaScript 代码来实现自定义样式、呈现、布局、交互或无障碍模式。随着浏览器供应商发展网络标准,将这些模式从用户层纳入到了浏览器本身,开发人员在未来可能需要做的工作更少了,只需依赖平台。更少的自定义 JavaScript 也有利于用户提高性能。提议的声明式 API 已经包含在至少一个稳定的浏览器引擎中了。

 

首先讨论的模式是可定制的选择菜单。原生 <select> 元素的内部结构历来很难在不同浏览器中一致地进行样式定制

 

开发人员在尝试使用浏览器内置表单控件( <select> 和各种 <input> 类型)时,一个常见的挫折是他们无法自定义这些控件的外观以适应他们网站的设计或用户体验。在一项关于表单控件和组件的Web开发人员调查中,开发人员重写这些控件版本的主要原因是无法充分自定义原生控件的外观。

 

可定制选择菜单的构建块是Popover API锚点定位

 

Popover API 处理浮动选项列表,确保它出现在其他 UI 元素之上,易于关闭,并管理焦点。Popover 已达到基线状态,现在在所有浏览器中都可用

 

命令调用者Commandcommandfor 属性)提供了一个类似于 popovertarget 的声明式 HTML 解决方案,用于将按钮点击连接到操作(例如,打开对话框),减少了样板 JavaScript 的需求。

 

锚点定位(Anchor Positioning)是一个 CSS API,允许开发人员将元素相对于其他元素(称为锚点)进行定位。这个 API 简化了许多界面特性(如菜单和子菜单、工具提示、选择、标签、卡片、设置对话框等)的复杂布局需求。锚点定位是Interop 2025的一部分,这意味着它将在今年年底出现在所有浏览器中。

 

改进的 select 元素结构展示了两个部分,一个按钮和一个锚定在该按钮上的弹窗,它们都有相应的选择器用于定位和设置样式:



可以通过选择器 ::picker(select) 为弹出窗口应用样式。一个自定义样式的例子如下所示:

 

/*进入自定义模式*/select,::picker(select) {  appearance: base-select;}

/*设置按钮的样式*/::select-fallback-button { background: gold; font-family: fantasy; font-size: 1.2rem;}

/*设置下拉菜单中选择器的样式*/::picker(select) { border-radius: 1rem;}

/*设置选项的样式*/option { font-family: monospace; padding: 0.5rem 1rem 0.5rem 0; font-size: 1.2rem;}

/*下拉列表中选中项的样式*/option:checked { background: powderblue;}

/*设置鼠标悬停或焦点时的选项样式*/option:hover,option:focus-visible { background-color: pink;}

/*设置当前选项指示符的样式*/option::before { content: ''; font-size: 80%; margin: 0.5rem;}

/*类推*/body { padding: 2rem;}
复制代码

 

鼓励开发人员查看完整的演讲以获取更多的技术细节、演示和解释。这次演讲还解释了CSS Overflow 5规范中的新特性,即滚动按钮和滚动标记,是如何在纯CSS中实现滚动驱动动画(例如轮播图)的。

 

原文链接:

https://www.infoq.com/news/2025/06/new-web-ui-standard-2025/

2025-06-10 16:004488

评论

发布
暂无评论

GaoNeng:我是如何为OpenTiny贡献新组件的?

OpenTiny社区

开源 前端 UI组件库

常见的负载均衡策略有哪些?

王磊

Java面试题

构建一体化云原生安全防护体系,天翼云红盾护航企业云上安全!

天翼云开发者社区

云计算 网络安全

程序员一年中最佳跳槽时间是什么时候?

程序员小毕

程序员 架构师 java面试 跳槽 金九银十

GO语言的map使用

李爽

clean code #go

释放多云应用价值,天翼云打造一站式数据库多云管理平台

天翼云开发者社区

数据库 云平台

Bartender 4 for Mac最新免激活中文

胖墩儿不胖y

Mac软件 菜单栏管理工具

Paimon+StarRocks 湖仓一体数据分析方案

Apache Flink

大数据 flink 实时计算

字节跳动技术面试官,帮你考前划重点,还有面试真题哦

字节跳动技术范儿

字节跳动 面试 校招 字节跳动面经

深入解读 MongoDB CDC 的设计与实现

Apache Flink

大数据 flink 实时计算

穿上App外衣,保持Web灵魂——PWA温故

互联网工科生

App PWA #web

开源可观测数据采集工具 Vector 已内置 GreptimeDB 支持

Greptime 格睿科技

数据库 vector Sink 可观测 Greptime

低代码概念——初步认识低代码

互联网工科生

低代码 企业级应用程序开发 JNPF

驶向高效运营,StarRocks 助力蔚来汽车数据分析再升级

StarRocks

数据库 大数据 数据仓库 数据湖

常用MySQL 查询语句大全

小魏写代码

MySQL :MySQL 数据库

【玩转鲲鹏DevKit系列】何如快速迁移有源码应用

华为云开发者联盟

开发 华为云 鲲鹏 华为云开发者联盟 企业号9月PK榜

开讲啦!0基础也能玩转飞桨开源社区

飞桨PaddlePaddle

人工智能 百度飞桨 开源活动

软件测试/测试开发丨Python 类的继承常见问题

测试人

Python 程序员 软件测试 自动化测试 测试开发

可不能忽视的五个 HTTP 请求要点

Liam

程序员 前端 后端 HTTP API

技术分享 | LSM,Linux 内核的安全防护盾

鼎道智联

Linux

纯干货!一文get昇腾Ascend C编程入门全部知识点

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号9月PK榜

8月《中国数据库行业分析报告》已发布,聚焦数据仓库、首发【全球数据仓库产业图谱】

墨天轮

数据库 数据仓库 Apaache Doris 国产数据库 snowflake

技术思维和管理思维

老张

技术思维 管理思维

没有苹果开发者账号能否创建ios证书-最新

谷歌的“Web UI新功能”演讲:更少的自定义组件JavaScript,更多的Web标准_软件工程_Bruno Couriol_InfoQ精选文章