HTML5.2新标签 —— dialog

简介: 继HTML5新增了诸多新的标签之后,HTML5.2又引入了几个现代标签,其中就包括<dialog>标签。 下面跟大家一块学习一下这个标签。

HTML5.2新标签 —— dialog

原文地址

前言

继HTML5新增了诸多新的标签之后,HTML5.2又引入了几个现代标签,其中就包括<dialog>标签。 下面跟大家一块学习一下这个标签。

举个栗子

下来看一个最简单的例子↓:

以上就是dialog的原生态样式,未添加任何额外样式。这在Chrome和Firefox里表现是一致的,它们各自的默认样式是这样的,基本一致——

Chrome: Firefox: 

嫌丑?!如果给它加上瘦脸(去掉默认样式),加上美颜(css),再加上特效(js),一样可以十分性感。

两个属性

open

该属性意味着该对话框是可见的,没有它,这个对话框就会隐藏起来,直到你使用JavaScript来显示它,其实就是给它加上了open属性。

returnValue

用来获取close时传入的参数,看下面。

三个方法

show()

showModal()

两个方法相同点都是打开弹窗,即都会给dialog元素添加一个open属性。 不同点:

唯一区别就是show()会按照其在DOM流中的位置显示dialog,没有遮罩,而showModal()会出现遮罩, 并且自动做了按键监控,即点击esc键,弹窗会关闭

大多数情况下,我们会使用便利的showModal()方法来而不使用show()方法。

close()

会关闭弹窗,即会删除open属性,并且可以携带一个参数作为额外数据,传入的值可以通过dialog.returnValue获取。

两个事件

close

当modal关闭的时候触发

cancel

当按下ESC关闭模态框的时候触发

在各事件的事件对象event.target里,同样可以看到close()方法传入的参数,即event.target。returnValue。

一个伪元素

::backdrop

是dialog伪元素,用来设置弹窗遮罩的样式,用法如下

dialog::backdrop {
  background-color: rgba(0, 0, 0, 0.4);
}

  • 浏览器对backdrop也有默认的样式。 chrome:
  •  

再举个栗子

部分代码


methods: {
    onShow () {
        this.dialog.showModal();
    }
},

mounted () {
    this.dialog = this.$refs.dialog2;
    let closeBtn = this.dialog.querySelector('.js-close');
    let confirmBtn = this.dialog.querySelector('.js-confirm');
    let cancelBtn = this.dialog.querySelector('.js-cancel');

    //按esc关闭弹窗,同时会触发close事件
    this.dialog.addEventListener('cancel', e => {
        //不写这句也会关闭,这里主要是为了携带数据及演示监听cancel事件
        this.dialog.close('按esc关闭');
    });

    //关闭
    this.dialog.addEventListener('close', e => {
        let returnValue = this.dialog.returnValue;
        this.dialog.returnValue = '';
        returnValue !== '' && this.$notify({
            title: 'returnValue',
            message: returnValue
        });
    });

    //点击遮罩关闭,事件注册在dialog上
    this.dialog.addEventListener('click', (event) => {
        if (event.target === this.dialog) {
            //关闭,并携带数据
            this.dialog.close('点击了遮罩关闭');
        }
    });

    //点×关闭
    closeBtn.addEventListener('click', e => {
        this.dialog.close('点击了关闭');
    });

    //点确定
    confirmBtn.addEventListener('click', e => {
        this.dialog.close('点击了确定');
    });

    //点取消
    cancelBtn.addEventListener('click', e => {
        this.dialog.close('点击了取消');
    });
}
/*改变dialog样式*/
dialog {
    position: fixed;
    margin: 0;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    min-width: 300px;
    max-width: 80%;
    border: none;
    box-shadow: 1px 1px 1px rgba(0, 0, 0, .3);
}
dialog[open] {
    animation: slide-up 0.4s ease-out;
}
/*改变遮罩样式*/
dialog::backdrop {
    background: rgba(0, 0, 0, 0.5);
}
@keyframes slide-up {
    0% {
        opacity: 0;
        transform: translate(-50%, -40%);
    }
  
    100% {
        opacity: 1;
        transform: translate(-50%, -50%);
    }
}

polyfill

What?!浏览器不支持?手机端没反应?!!

木有关系。这里有一个dialog-polyfill, 通过少许的额外代码,依然可以实现实现上面的功能。 只要引入该js,js中在弹窗对象后面添加一句:

dialogPolyfill.registerDialog(this.dialog);

再引入它的css(很简单)即可。有兴趣的同学可以试试,这里不再赘述~ 不支持的浏览器再试下这个Demo↓:

最后一个栗子

参考资料


原文发布时间为:2018年06月29日
本文作者:掘金
本文来源:掘金  如需转载请联系原作者
相关文章
|
3月前
|
移动开发 HTML5
HTML5标签的类型
HTML5标签的类型。
80 5
|
2月前
|
移动开发 搜索推荐 UED
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
98 49
|
5月前
|
数据采集 移动开发 前端开发
HTML代码的革命:语义化标签的魅力,让你的网页结构焕然一新!
【8月更文挑战第26天】本文探讨了Web前端开发中的语义化标签概念及其重要性。语义化标签通过使用具有明确含义的HTML标签来构建页面结构,提升了网页的可访问性及搜索引擎优化效果,并增强了代码的可读性和维护性。文章还讨论了实际开发中遇到的问题及未来发展趋势。
72 0
|
2月前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
52 5
|
2月前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
2月前
|
存储 移动开发 前端开发
|
3月前
|
前端开发
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
60 2
|
3月前
|
移动开发 前端开发 JavaScript
【HTML】HTML页面和常见标签
【HTML】HTML页面和常见标签
46 1
|
4月前
|
前端开发
前端基础(二)_HTML常用标签(块级标签、行级标签、行块级标签)
本文详细介绍了HTML中的常用标签,包括块级标签(如`h1`至`h6`、`p`、`div`等)、行级标签(如`span`、`b`、`strong`、`i`、`em`、`sub`、`sup`、`del`、`a`等),以及行块级标签(如`img`)。文章解释了这些标签的用途、特点和基本用法,并通过示例代码展示了如何在HTML文档中使用它们。
259 1
|
4月前
|
移动开发 开发者 UED
HTML5中video标签controlslist属性的使用方法
`controlsList`属性为开发者提供了更多控制HTML5视频播放器行为的能力,让视频内容的集成更加灵活和符合需求。通过精心设计的控制列表,可以提升用户体验,同时保持内容的安全性和专业性。这种细节的控制和定制能力是现代Web开发的一个重要方面,反映了HTML5对开发者和内容创作者需求的响应。
424 1