dialog元素

HTML5.2 新增了 <dialog> 元素,用以支持原生的 Modal 窗口,对于前端开发而言,使用它十分的简单方便。

基本使用

新建一个 <dialog> 元素

<dialog open>     native dialog
</dialog>

open 属性用以控制元素的显示,如果不添加,元素不会显示,但你也可以用 js 去控制其显示隐藏。
在没有添加任何样式的情况下,元素的外观是这样的:

dialog元素

它会绝对定位于页面中,层级在其他元素之上,并且居中,其宽高也会根据内容自适应。

const dialog = document.querySelector('dialog');

//显示元素,添加 open 属性,允许背景交互
dialog.show();

//显示元素,添加 open 属性,禁止背景交互
dialog.showModal();

//隐藏元素,删除 open 属性
dialog.close();

<dialog> 元素提供三个交互方法:

  • HTMLDialogElement.close()

  • HTMLDialogElement.show()

  • HTMLDialogElement.showModal()

close() 用于隐藏元素,show()showModal() 都可以显示元素,但当你使用 showModal() 来显示<dialog> 元素时,会在页面中添加一个背景层,该背景层会阻止用户与<dialog> 元素之外的部分进行交互,在默认情况下,这个背景层是透明的,我们可以通过 css 去改变背景层的样式。

样式

<dialog> 元素的样式的设置和其他元素一样,背景层需要使用的新的::backdrop伪元素来修改。

dialog {
   border: 3px solid #eee;
   border-radius: 5px;
}

dialog::backdrop {
   /* 背景层样式 */
   background-color: rgba(0, 0, 0, 0.4);
}

dialog元素

交互

对话框的一个重要功能就是通过与用户交互得到相应的反馈,在关闭 <dialog> 元素时,可以将字符串传递给 close() 方法,该值将会分配给该元素的 returnValue 属性中,你可以在其他地方去获取它。

dialog.close('test');

console.log(dialog.returnValue); // test

你也可以监听该元素的事件,其中用处较大的有 close(当对话框关闭时触发)和 cancel (按esc键触发)。

兼容性

dialog元素

<dialog> 元素的兼容性还不大尽如人意,毕竟是刚增加的元素,不过已经有了针对该元素的 polyfill (https://github.com/GoogleChrome/dialog-polyfill) ,使用该 polyfill 可以兼容到 ie9+, 感兴趣的话可以使用起来。

本篇文章来源于微信公众号: TripDesign

UI/UX

用户体验设计的自动化 | 文章翻译

2018-5-14 8:42:00

UI/UX

什么是用户界面和体验设计

2018-5-14 19:11:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索