2025 年 HTML 年度调查报告公布!好多不知道!

前言

近日,「State of HTML 2025」年度调查报告公布。

这份报告收集了全球数万名开发者的真实使用经验和反馈,堪称是 Web 开发领域的“年度风向标”。

让我们看看 2025 年,大家都用了 HTML 的哪些功能。

注:State of JS 2025 还未公布,欢迎关注公众号:冴羽,第一时间获取报告结果。

特性 Top 5

开发者使用最多的特性 Top 5 分别是:

  1. 地标元素(Landmark Elements)

其实就是<aside>,<article>,<main>,<nav>,<section>这些,想必你也经常使用。

  1. tabindex 属性:使 HTML 元素可聚焦,允许或阻止它们按顺序获得焦点。
<divrole="button"tabindex="0">I’m Tabbable</div>
  1. <svg>(内联 SVG)
<svg><circlecx="50"cy="50"r="50"/></svg>
  1. <canvas>
<canvaswidth="200"height="200"></canvas>
  1. loading="lazy":懒加载
<imgsrc="picture.jpg"loading="lazy"/><iframesrc="supplementary.html"loading="lazy"></iframe>

表单 Top 5

开发者使用最多的表单功能 Top 5 分别是:

  1. <input type="color">:颜色选择器
<inputtype="color"/>
  1. <datalist>:供用户选择的表单控件
<inputname="country"list="countries"/><datalistid="countries"><option>Afghanistan</option>...</datalist>
  1. input.showPicker():打开具有选择器的表单控件(颜色选择器、日期输入框等)
<inputid="dateInput"type="date"/><buttononclick="dateInput.showPicker()">Select date</button>
  1. contenteditable="plaintext-only":允许编辑元素的原始文本,但不允许进行富文本格式设置
<h2class="title"contenteditable="plaintext-only"></h2>
  1. Customizable Select:可自定义样式和样式的下拉控件
select, ::picker(select){appearance:base-select;}

图形和多媒体 Top 5

开发者使用最多的图形和多媒体功能 Top 5 分别是:

  1. <svg>(内联 SVG)
<svg><circlecx="50"cy="50"r="50"/></svg>
  1. <canvas>
<canvaswidth="200"height="200"></canvas>
  1. ctx.drawElement():使开发者可以在 HTML 元素上绘制<canvas>
<canvasid="canvas"layoutsubtree="true"><p>Hello world!</p></canvas><scripttype="module">constctx=canvas.getContext("2d");consttext=canvas.querySelector("p");ctx.drawElement(text,30,0);</script>
  1. WebGL:一个基于 OpenGL 的底层 API
const gl = canvas.getContext("webgl");
  1. colorSpace:设置图形的颜色空间
const ctx = canvas.getContext("2d", {colorSpace: "display-p3"});

内容 Top 5

开发者使用最多的图形和多媒体功能 Top 5 分别是:

  1. 内容安全策略 (CSP):网站向浏览器发出的一组指令,用于帮助检测和缓解 XSS 攻击
Content-Security-Policy: script-src 'self';
  1. <template>:内容在加载页面时不会呈现,但随后可以在运行时使用 JavaScript 实例化
<templateid="counter"><divclass="counter">Clicked {{ times }} times</div></template>
  1. Intl.LocaleAPI:国际化 API
const us = new Intl.Locale("en-US");
  1. HTML 模块:通过 JS imports 导入 HTML 文件,并访问其元素和 JS 导出
<scripttype="module">import{TabList}from"./tablist.html"with{type:'html'};customElements.define("tab-list",TabList);</script>
  1. Sanitizer API:element.setHTML()以及Document.parseHTML()API,通过清理 HTML 中不受信任的字符串来防止 XSS 攻击。
greeting.setHTML('Hello ' + nameInput.value);

交互 Top 5

开发者使用最多的交互功能 Top 5 分别是:

  1. <details><summary>:隐藏或显示内容
<details><summary>Details</summary>Longer content</details>
  1. <dialog>:对话框
<dialogid="confirm"><formmethod="dialog">Are you sure?<buttonvalue="1">Yes</button><buttonvalue="0">No</button></form></dialog>
  1. <details name>:手风琴效果
<detailsopenname="sidebar_panel"><summary>Main info</summary><!-- controls --></details><detailsname="sidebar_panel"><summary>Style</summary><!-- controls --></details>
  1. popover:弹出窗口
<buttonpopovertarget="foo">Toggle the popover</button><divid="foo"popover>Popover content</div>
  1. element.before():将一个元素移动到另一个元素之前的 DOM 方法
referenceElement.before(newElement);

性能 Top 5

开发者使用最多的性能功能 Top 5 分别是:

  1. loading="lazy":懒加载
<imgsrc="picture.jpg"loading="lazy"/><iframesrc="supplementary.html"loading="lazy"></iframe>
  1. srcset 和 sizes 属性:提供多个源图像,以帮助浏览器选择正确的图像
<imgsrcset="fairy-med.jpg 480w, fairy-large.jpg 800w"sizes="(max-width: 600px) 480px, 800px"src="fairy-large.jpg"alt="Elva dressed as a fairy"/>
  1. fetchpriority 属性:浏览器优先获取该资源
<imgsrc="logo.svg"fetchpriority="high"/>
  1. <img sizes="auto" loading="lazy">sizes="auto"属性会在图像加载之前为其预留布局空间,从而避免一些布局偏移
<imgsizes="auto"loading="lazy"/>
  1. blocking="render":阻止渲染(但不阻止解析),直到某些资源加载完毕
<scriptblocking="render"asyncsrc="async-script.js"></script>

Web 组件 Top 5

开发者使用最多的 Web 组件功能 Top 5 分别是:

  1. 自定义元素
<my-switchstart="On"end="Off">Wi-Fi</my-switch>
  1. 定义自定义元素
classMyElementextendsHTMLElement{}customElements.define("my-element",MyElement);
  1. Shadow DOM:将外部不可见的元素封装起来,并使用不影响页面其余部分的 CSS 对其进行样式设置
this.shadowRoot=this.attachShadow({mode:"open"});
  1. slot 属性:将组件 UI 中预定义的部分替换为自己的元素
<my-switch>Wi-Fi<islot="start"class="icon-on">On</i><islot="end"class="icon-off">Off</i></my-switch>
  1. 声明 Shadow DOM:使用 HTML 定义 Shadow 树,例如在服务器端渲染 Web 组件时
<host-element><templateshadowrootmode="open"><!-- Shadow content --></template></host-element>

系统功能 Top 5

开发者使用最多的系统功能 Top 5 分别是:

  1. Web Share API:将内容共享给用户选择的各种目标的机制
navigator.share(shareData);
  1. 文件系统访问 API:访问用户本地设备上的文件和目录,并创建可写文件,以便进行更新
consthandle=awaitwindow.showSaveFilePicker();constwritable=awaithandle.createWritable();awaitwritable.write("Hello, world!");awaitwritable.close();
  1. SpeechRecognition:将麦克风输入转换为文本的 API
constrec=newSpeechRecognition();rec.lang="en-US";rec.addEventListener("result",(e)=>console.log(e.results[0][0].transcript));rec.start();
  1. share_target manifest field:允许 PWA 通过系统共享对话框接收来自其他应用程序共享的数据(文本、文件、URL)
"share_target":{"action":"/share","method":"POST","enctype":"multipart/form-data","params":{"title":"title","text":"text","url":"url","files":[{"name":"image","accept":["image/*"]}]}}
  1. 文件处理 API:允许 PWA 将自身注册为某些文件类型的处理程序
"file_handlers":[{"action":"/open-file","accept":{"image/svg+xml":".svg","image/png":".png"}}]

无障碍 Top 5

开发者使用最多的无障碍功能 Top 5 分别是:

  1. 地标元素
  2. tabindex 属性:使 HTML 元素可聚焦,允许或阻止它们按顺序获得焦点
<divrole="button"tabindex="0">I’m Tabbable</div>
  1. <search>:用于封装搜索用户界面的语义元素
<search><formaction="search.php"><label>Find:<inputname="q"type="search"/></label><button>Go!</button></form></search>
  1. focusgroup 属性:使用键盘方向键在可聚焦元素之间进行键盘焦点导航
<divfocusgroup="wrap horizontal"><!-- child elements --></div>

最后

我们通常认为最炫酷的功能会最吸引开发者,比如人工智能 API、3D/XR/AR 或设备 API。

然而,年复一年,最终脱颖而出的却往往是那些看似平淡无奇的功能,甚至是一些非常普通的功能:下拉菜单、组合框、弹出框、对话框、表单验证、文件加载和保存、模板、安全地显示用户生成内容、图标等等。

有人可能会问:“这些功能不是早就有了吗?”

确实是,但问题在于 ——当用户界面无法自定义或设置样式时,它实际上就等于无法使用。

于是你不得不重复造轮子,拼一堆第三方库。结果明明是基础需求,却搞得像 “高端操作”。

但好消息是:HTML 正在变好!

2023 年还在讨论的功能,现在已经在主流浏览器上线了;之前没法用的 Popover API,现在所有主流浏览器都支持了。

虽然开发者的信任要滞后很多……

比如 Popover API 明明已经全支持了,却还是开发者投诉 “浏览器不支持” 最多的功能 —— 不是浏览器没跟上,是我们还没反应过来 “这个功能已经能用了”。

此外,AI 也拖了后腿。

按理说,AI 懂现代 Web 功能,应该能帮我们更快应用新特性,但实际情况是 —— AI 太保守了,推荐的都是 “老办法”,反而让新功能的普及变慢了。

总的来说,HTML 的未来方向很清晰:更灵活、更能表达需求、更贴合开发者实际开发习惯。

最后使用报告中的一句话:

“Web 的进步很少轰轰烈烈,但都是累积的。每多一个基本功能,就少用一次变通方案、少依赖一个库、少写一个脆弱的 hack。等这些基础都到位了,整个 Web 开发都会变轻松。”

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的“网页版朋友圈”,关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Live Avatar最佳实践:素材准备、提示词与工作流三步法

Live Avatar最佳实践&#xff1a;素材准备、提示词与工作流三步法 1. 引言 Live Avatar是由阿里巴巴联合多所高校共同开源的数字人生成模型&#xff0c;旨在通过文本、图像和音频输入驱动高保真虚拟人物视频的生成。该模型基于14B参数规模的DiT&#xff08;Diffusion Transfo…

Glyph能否替代传统VLM?技术架构对比评测报告

Glyph能否替代传统VLM&#xff1f;技术架构对比评测报告 1. 引言&#xff1a;视觉推理的范式转变 随着大模型对上下文长度需求的不断增长&#xff0c;传统基于文本令牌&#xff08;token-based&#xff09;的长上下文建模面临计算复杂度和内存占用的双重挑战。在此背景下&…

高效多模态交互实现路径|AutoGLM-Phone-9B架构与部署详解

高效多模态交互实现路径&#xff5c;AutoGLM-Phone-9B架构与部署详解 1. AutoGLM-Phone-9B 多模态模型工作机制 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型&#xff0c;融合视觉、语音与文本处理能力&#xff0c;支持在资源受限设备上高效推理。该模型基于 GL…

hal_uart_transmit中断模式配置:手把手教程(从零实现)

从轮询到中断&#xff1a;彻底搞懂HAL_UART_Transmit_IT的实战配置你有没有遇到过这样的场景&#xff1f;系统正在执行关键的PWM控制或ADC采样&#xff0c;突然要发一条串口日志——结果一调用HAL_UART_Transmit&#xff0c;整个主循环卡住几毫秒。电流环PID抖动了&#xff0c;…

CAM++日志分析:识别失败案例的数据挖掘方法

CAM日志分析&#xff1a;识别失败案例的数据挖掘方法 1. 引言 在语音识别与说话人验证领域&#xff0c;CAM 是一种高效且准确的深度学习模型&#xff0c;专为中文语境下的说话人验证任务设计。该系统由开发者“科哥”基于 ModelScope 开源模型 speech_campplus_sv_zh-cn_16k-…

BAAI/bge-m3功能全测评:多语言语义理解真实表现

BAAI/bge-m3功能全测评&#xff1a;多语言语义理解真实表现 1. 引言&#xff1a;为何需要强大的语义嵌入模型&#xff1f; 在当前大模型与检索增强生成&#xff08;RAG&#xff09;系统广泛落地的背景下&#xff0c;高质量的文本向量化能力已成为AI应用的核心基础设施。一个优…

Qwen3-0.6B是否支持Function Call?LangChain集成详解

Qwen3-0.6B是否支持Function Call&#xff1f;LangChain集成详解 1. 技术背景与问题提出 随着大语言模型在实际业务场景中的广泛应用&#xff0c;函数调用&#xff08;Function Calling&#xff09; 已成为连接LLM与外部系统的关键能力。它允许模型根据用户输入判断是否需要调…

AIVideo性能监控:资源使用实时查看方法

AIVideo性能监控&#xff1a;资源使用实时查看方法 1. 平台简介与核心价值 AIVideo是一款面向AI长视频创作的一站式全流程自动化生产平台&#xff0c;致力于降低专业级视频制作的技术门槛。用户只需输入一个主题&#xff0c;系统即可自动生成包含分镜设计、画面生成、角色动作…

如何用Python统计电影演员出演次数

在处理电影数据时,统计演员的出演次数是一个常见需求。本文将通过一个实例,展示如何使用Python中的collections.Counter来统计电影演员的出演次数,同时讨论为什么直接使用Pandas进行此类操作会遇到问题。 数据准备 首先,我们定义一个简单的电影类来存储电影的基本信息: …

MiDaS模型安全指南:云端隔离运行防数据泄露

MiDaS模型安全指南&#xff1a;云端隔离运行防数据泄露 在医疗AI领域&#xff0c;处理患者影像数据是日常工作的核心。这些数据不仅包含丰富的医学信息&#xff0c;也涉及高度敏感的个人隐私——一旦泄露&#xff0c;可能带来严重的法律和伦理风险。然而&#xff0c;为了提升诊…

Image-to-Video在电商场景的应用:商品展示视频自动生成

Image-to-Video在电商场景的应用&#xff1a;商品展示视频自动生成 1. 引言 随着电商平台竞争日益激烈&#xff0c;商品展示方式的创新成为提升转化率的关键因素之一。传统的静态图片已难以满足用户对沉浸式购物体验的需求。近年来&#xff0c;AI驱动的Image-to-Video&#x…

MinerU知识库构建:从PDF到向量化存储实战

MinerU知识库构建&#xff1a;从PDF到向量化存储实战 1. 引言 1.1 业务场景描述 在企业级知识管理、智能客服与AI问答系统中&#xff0c;非结构化文档&#xff08;尤其是PDF&#xff09;占据了信息源的绝大部分。然而&#xff0c;传统文本提取工具在处理多栏排版、复杂表格、…

WordPress Gutenberg卡片块嵌套问题解决方案

引言 在使用WordPress的Gutenberg编辑器时,创建自定义块是一个非常强大的功能。特别是当你尝试将一个自定义的卡片块嵌入到其他块中时,比如说列块,你可能会遇到一些选择和更新卡片块的难题。本文将探讨如何通过适当的代码调整来解决这些问题,并提供一个实例来展示解决方案…

Z-Image-Turbo实测:8步出图,速度远超Stable Diffusion

Z-Image-Turbo实测&#xff1a;8步出图&#xff0c;速度远超Stable Diffusion 1. 引言&#xff1a;文生图效率的新标杆 在AIGC&#xff08;人工智能生成内容&#xff09;快速发展的今天&#xff0c;图像生成模型的推理效率已成为决定其能否落地于工业场景的关键因素。尽管Sta…

Qwen All-in-One高算力适配秘诀:FP32精度下的高效推理

Qwen All-in-One高算力适配秘诀&#xff1a;FP32精度下的高效推理 1. 引言&#xff1a;轻量模型如何实现多任务智能服务 随着大语言模型&#xff08;LLM&#xff09;在自然语言处理领域的广泛应用&#xff0c;部署成本与推理效率之间的矛盾日益突出。尤其是在边缘计算或无GPU…

深入探讨Java中ZXing库生成条码的细节

在计算机编程领域,特别是涉及到自动识别和数据捕获的应用中,条码生成是一个常见的需求。本文将通过实例探讨在Java中使用ZXing库生成条码时可能遇到的细节问题,尤其是不同编码方式对条码外观的影响。 问题背景 最近,我在使用ZXing库生成Code 128条码时,注意到一个有趣的…

从本地上传到剪贴板粘贴:cv_unet_image-matting多方式输入实战

从本地上传到剪贴板粘贴&#xff1a;cv_unet_image-matting多方式输入实战 1. 引言 随着图像处理技术的不断发展&#xff0c;AI驱动的智能抠图工具在设计、电商、摄影等领域的应用日益广泛。传统的手动抠图耗时耗力&#xff0c;而基于深度学习的方法如U-Net架构则能实现高效、…

信奥赛C++提高组csp-s之快速幂

信奥赛C提高组csp-s之快速幂 题目描述 给你三个整数 a,b,pa,b,pa,b,p&#xff0c;求 abmodpa^b \bmod pabmodp。 输入格式 输入只有一行三个整数&#xff0c;分别代表 a,b,pa,b,pa,b,p。 输出格式 输出一行一个字符串 a^b mod ps&#xff0c;其中 a,b,pa,b,pa,b,p 分别为题…

中小企业降本增效:bge-m3免费镜像部署实战指南

中小企业降本增效&#xff1a;bge-m3免费镜像部署实战指南 1. 引言 1.1 业务场景描述 在当前AI技术快速落地的背景下&#xff0c;中小企业普遍面临知识管理效率低、信息检索不准、客服响应慢等问题。传统的关键词匹配方式难以理解用户真实意图&#xff0c;导致搜索结果相关性…

使用ASP.NET Core MVC实现实时表单自动填充

在ASP.NET Core MVC开发中,如何让表单在用户输入时自动填充相关信息是一个常见的需求。本文将通过一个简单的库存管理系统实例,展示如何利用ASP.NET Core MVC的特性和JavaScript的Ajax技术来实现这一功能。 背景介绍 假设我们有一个库存管理系统,用户需要扫描产品的序列号…