inert 属性,让浏览器忽略所有用户交互

简介: 在浏览器中,用户交互包括永远排在第一位,不可被打断,哪怕浏览器在假死的状态下,用户的交互行为也是不可被打断的; 但是在inert属性的作用下,用户的交互行为就会被忽略,接下来就带你一起来看看inert

在浏览器中,用户交互包括永远排在第一位,不可被打断,哪怕浏览器在假死的状态下,用户的交互行为也是不可被打断的;

但是在inert属性的作用下,用户的交互行为就会被忽略,接下来就带你一起来看看inert属性的使用方法吧。

先来看demo,如果下面的第二行元素可以正常触发交互,例如选中,那证明你的浏览器不支持该属性:
代码片段

1. inert 属性

inert是一个HTML Element的属性,它的属性值是一个布尔值,如果inert的值为true,那么浏览器就会忽略用户的交互行为,如果inert的值为false,那么浏览器就会响应用户的交互行为。

<div inert>
    <button onclick="console.log('click')">Click me</button>
</div>

它可以作用在任何的HTML Element上,比如divspanbuttoninput等等;在有inert属性的HTML Element上它所有的子元素也会被忽略,不会响应用户的交互行为。

虽然它可以让DOM失去交互行为,但是它本身没有样式,也不会影响渲染。

2. inert 的应用场景

2.1. 弹出框

在弹出框中,我们通常会有一个遮罩层,这个遮罩层的作用是阻止用户的交互行为,让用户只能操作弹出框中的内容。

<div id="content" style="height: 200vh;" inert>
    这里面有很多内容
    <input>
    <button onclick="console.log('click')">Click me</button>
    ......
</div>

<div id="mask" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5);"></div>
<div id="dialog" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; height: 200px; background: #fff;">
    <button onclick="console.log('click')">Click me</button>
</div>

这个时候,我们可以使用inert属性来代替遮罩层,让用户只能操作弹出框中的内容。

<style>
    #content[inert] {
    
    
        background: rgba(0, 0, 0, 0.5);
    }
</style>

<div id="content" style="height: 200vh;" inert>
    这里面有很多内容
    <input>
    <button onclick="console.log('click')">Click me</button>
    ......
</div>

<div id="dialog" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; height: 200px; background: #fff;">
    <button onclick="console.log('click')">Click me</button>
</div>

2.2. 表单禁用

有时候我们需要禁用整个表单,这个时候我们可以使用inert属性来代替disabled属性。

<form>
    <input disabled>
    <button disabled>Submit</button>
</form>

在没有这个属性之前,我们只能一个一个的禁用表单中的元素,但是现在我们可以使用inert属性来禁用整个表单。

<form inert>
    <input>
    <button>Submit</button>
</form>

2.3. 阻止用户选中

有时候我们需要阻止用户选中页面中的内容,这个时候我们可以使用inert属性来代替user-select: none

<div style="user-select: none;">
    这里面的内容不能被选中
</div>

在没有这个属性之前,我们只能使用user-select: none来阻止用户选中页面中的内容,但是现在我们可以使用inert属性来阻止用户选中页面中的内容。

<div inert>
    这里面的内容不能被选中
</div>

3. 兼容性

image.png

可以看到兼容性还不是很好,都是高版本的浏览器才支持,所以这个属性还是为未来作技术预研的,不要在生产环境中使用。

4. 参考

MDN
HTML Standard
Chrome Developer

目录
相关文章
|
7月前
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
235 0
|
4月前
|
存储 缓存 前端开发
前端谷歌浏览器面版属性
【8月更文挑战第19天】前端谷歌浏览器面版属性
49 0
|
5月前
|
存储 Web App开发 JavaScript
浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)
浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)
237 0
|
7月前
|
编解码 JavaScript 前端开发
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
76 2
|
存储 Web App开发 编解码
浏览器原理 32 # 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
浏览器原理 32 # 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
181 0
浏览器原理 32 # 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
|
Windows
el-input在ie浏览器下readonly属性出现光标
el-input在ie浏览器下readonly属性出现光标
204 0
Springboot项目启动后获取配置属性,打开浏览器
Springboot项目启动后获取配置属性,打开浏览器
254 0
|
JavaScript 前端开发
浏览器中BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法(上)
在学过JavaScript之后,我们都知道对象分为内置对象 、宿主对象 、自定义对象,我们经常用到的浏览器中的内置对象就是宿主对象的一种,浏览器的内置对象有很多,本文就来详细讲解一下Window对象的属性与方法吧。
121 0
浏览器中BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法(上)
|
JavaScript 前端开发
浏览器中BOM(浏览器对象模型)重点掌握对象之Location对象的属性与方法
在学过JavaScript之后,我们都知道对象分为内置对象 、宿主对象 、自定义对象,我们经常用到的浏览器中的内置对象就是宿主对象的一种,浏览器的内置对象有很多,本文就来详细讲解一下Location对象的属性与方法吧。
279 0
浏览器中BOM(浏览器对象模型)重点掌握对象之Location对象的属性与方法