inert 属性是浏览器原生的语义化暂停机制,使元素及其子树完全脱离交互与可访问性树;需现代浏览器支持(Chrome 111+、Firefox 121+、Safari 18.0+),JS 设置须用 element.inert = true,不可用 setAttribute。inert 属性能真正让元素及其子树"消失"在交互和可访问性树中------不是靠 disabled(只对表单控件有效),也不是靠 pointer-events: none(仍能被键盘聚焦、屏幕阅读器读取),而是浏览器原生的、语义化的暂停机制。inert 属性生效的前提条件它只在现代浏览器中可用(Chrome 111+、Firefox 121+、Safari 18.0+),旧版 Safari 和 Edge 旧内核完全不支持,且没有 polyfill 能完美模拟其行为。使用前必须确认目标环境:inert 是 HTML 全局属性,可直接写在任意元素上:<div inert>...</div>JavaScript 中设置需用 element.inert = true(注意:不是 setAttribute('inert', ''),后者无效)动态添加/移除时,DOM 会立即响应:焦点自动退出 inert 区域,tabindex 失效,click/keydown 事件不再冒泡进该子树inert 和 aria-hidden + pointer-events 的关键区别很多人试图用组合方式"模拟" inert,但会踩坑:aria-hidden="true" 只影响屏幕阅读器,不影响键盘导航或鼠标点击pointer-events: none 阻止鼠标,但 Tab 仍能聚焦其中的 input 或 button,且焦点卡住后无法自然离开display: none 或 visibility: hidden 会破坏布局流或留白,而 inert 不影响渲染样式,仅切断交互与可访问性链路真正需要"临时挂起一整块 UI(比如弹窗背后的页面)"时,inert 是唯一能同时解决键盘、鼠标、AT(辅助技术)三端一致性的方案。立即学习"前端免费学习笔记(深入)";常见误用场景与修复建议最常出问题的是"条件切换"逻辑写错: 幻导航网 发现优质实用网站,开启网络探索之旅!
相关推荐
IvorySQL5 小时前
PG 日报|新增 VACUUM 全维度统计信息补丁迭代白露与泡影8 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透yaoxin5211238 小时前
462. Java 反射 - 获取声明类与封闭类赵渝强老师9 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据中微极客9 小时前
解锁LLM开发全栈能力:Python + LangChain + RAG 工程实战指南hhzz9 小时前
Barbershop:基于GAN和分割Mask的图像合成技术——从理论到实战全解析IpdataCloud10 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器Ulyanov10 小时前
雷达导引头Python仿真框架:GPU加速、6-DOF模型与半实物仿真接口wuqingshun31415911 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?列逍11 小时前
博客系统测试