HTML5 原生 Dialog 小记

1,708 阅读2分钟

本文首发于「妙蛙种子前端博客」,欢迎关注~

HTML5的 dialog 元素可以快速实现一个带有遮罩层的弹窗,效果与el-dialog类似。

dialog 属性

HTML5 dialog 标签除了支持常规的全局属性外(id、class、data-* 等),还有一个自身特有的属性:open。

open 属性标识该 dialog 的状态是显示还是隐藏, dialog 上没有该属性时弹窗是隐藏的。所以我们可以动态控制 dialog 的open属性切换弹窗的显示和隐藏。

当然更多时候我们是直接获取 dialog 对象,通过事件的形式控制弹窗的显示和隐藏。

dialog 样式

  • dialog 元素自身的样式:可以控制 dialog 的背景颜色、边框、位置等。
  • dialog::backdrop,当 dialog 激活并且显示遮罩层的时候,控制遮罩层的样式。

如下样式效果:

      dialog {
        top: 130px;
        width: 400px;
        height: 220px;
        border: 1px solid red;
        border-radius: 8px;
      }
      dialog::backdrop {
        background-color: rgba(126, 201, 236, 0.6);
      }

dialog 事件

TypeScript中,可使用 HTMLDialogElement 来定义 dialog 类型,元素事件:

  • HTMLDialogElement.close():关闭弹窗
  • HTMLDialogElement.show():显示弹窗
  • HTMLDialogElement.showModal():显示遮罩层

DEMO

DEMO包含 HTML5 dialog 标签的使用,打开、关闭、显示遮罩层、样式控制等内容。

兼容性

Can I use 中可以看到,除了已经快被淘汰的IE系列外,别的浏览器都在近期的版本中慢慢适配了 dialog 标签,相信在不久的将来这些html5的新特性会被慢慢的普及开来。

当然你还有另一个选择,那就是使用 polyfillgithub.com/GoogleChrom…

交个朋友吧

交个朋友,关注 「妙蛙种子前端」 公众号吧!

妙蛙种子前端是一个记录/分享WEB前端技术相关的前端公众号,始于前端又不止于前端,包括但不限于前沿互联网只是、学习笔记、认知提升等内容。