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日
本文作者:掘金
本文来源:掘金  如需转载请联系原作者
相关文章
|
2月前
|
数据采集 移动开发 前端开发
HTML代码的革命:语义化标签的魅力,让你的网页结构焕然一新!
【8月更文挑战第26天】本文探讨了Web前端开发中的语义化标签概念及其重要性。语义化标签通过使用具有明确含义的HTML标签来构建页面结构,提升了网页的可访问性及搜索引擎优化效果,并增强了代码的可读性和维护性。文章还讨论了实际开发中遇到的问题及未来发展趋势。
44 0
|
2月前
|
移动开发 搜索推荐 前端开发
HTML结构的基本标签
HTML结构的基本标签
|
9天前
|
前端开发
前端基础(二)_HTML常用标签(块级标签、行级标签、行块级标签)
本文详细介绍了HTML中的常用标签,包括块级标签(如`h1`至`h6`、`p`、`div`等)、行级标签(如`span`、`b`、`strong`、`i`、`em`、`sub`、`sup`、`del`、`a`等),以及行块级标签(如`img`)。文章解释了这些标签的用途、特点和基本用法,并通过示例代码展示了如何在HTML文档中使用它们。
42 1
|
9天前
|
移动开发 开发者 UED
HTML5中video标签controlslist属性的使用方法
`controlsList`属性为开发者提供了更多控制HTML5视频播放器行为的能力,让视频内容的集成更加灵活和符合需求。通过精心设计的控制列表,可以提升用户体验,同时保持内容的安全性和专业性。这种细节的控制和定制能力是现代Web开发的一个重要方面,反映了HTML5对开发者和内容创作者需求的响应。
19 1
|
10天前
|
存储 JavaScript Java
使用NekoHTML解析HTML并提取META标签内容
关于NekoHTML的代码样例,这里提供一个简单的示例,用于展示如何使用NekoHTML来解析HTML文档并提取其中的信息。请注意,由于NekoHTML的具体实现和API可能会随着版本更新而有所变化,以下代码仅供参考。 ### 示例:使用NekoHTML解析HTML并提取META标签内容 ```java import org.cyberneko.html.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml
|
10天前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便
|
11天前
|
JavaScript 前端开发
react字符串转为dom标签,类似于Vue中的v-html
本文介绍了在React中将字符串转换为DOM标签的方法,类似于Vue中的`v-html`指令,通过使用`dangerouslySetInnerHTML`属性实现。
24 0
react字符串转为dom标签,类似于Vue中的v-html
|
26天前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
33 13
|
25天前
|
搜索推荐 SEO
HTML中各种标题标签的正确使用方法及其特点
在HTML中,标题标签(`&lt;h1&gt;`至`&lt;h6&gt;`)用于定义文档的标题结构。`&lt;h1&gt;`表示主标题,每个页面应只有一个;`&lt;h2&gt;`至`&lt;h6&gt;`分别表示不同层级的子标题,可用于细分内容。正确使用这些标签不仅有助于文档的层次分明和可读性提升,还能优化SEO。使用时需注意保持层级结构连续、内容描述清晰。
|
25天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
下一篇
无影云桌面