【HTML 教程】其他标签

AI摘要
Deepseek提供支持
本章介绍一些最新引入标准的标签。

1、<dialog>

1.1、基本用法

<dialog>标签表示一个可以关闭的对话框。
<dialog>
Hello world
</dialog>

上面就是一个最简单的对话框。

广告
广告图片

默认情况下,对话框是隐藏的,不会在网页上显示。如果要让对话框显示,必须加上open属性。

<dialog open>
Hello world
</dialog>

上面代码会在网页显示一个方框,内容是Hello world。

<dialog>元素里面,可以放入其他 HTML 元素。

<dialog open>
<form method="dialog">
<input type="text">
<button type="submit" value="foo">提交</button>
</form>
</dialog>

上面的对话框里面,有一个输入框和提交按钮。

注意,上例中<form>的method属性设为dialog,这时点击提交按钮,对话框就会消失。但是,表单不会提交到服务器,浏览器会将表单元素的returnValue属性设为 Submit 按钮的value属性(上例是foo)。

1.2、JavaScript API

<dialog>元素的 JavaScript API 提供Dialog.showModal()和Dialog.close()两个方法,用于打开/关闭对话框。

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

// 对话框显示,相当于增加 open 属性
modal.showModal();

// 对话框关闭,相当于移除 open 属性
modal.close();

开发者可以提供关闭按钮,让其调用Dialog.close()方法,关闭对话框。

Dialog.close()方法可以接受一个字符串作为参数,用于传递信息。<dialog>接口的returnValue属性可以读取这个字符串,否则returnValue属性等于提交按钮的value属性。

modal.close('Accepted');
modal.returnValue // "Accepted"

Dialog.showModal()方法唤起对话框时,会有一个透明层,阻止用户与对话框外部的内容互动。CSS 提供了一个 Dialog 元素的::backdrop伪类,用于选中这个透明层,因此可以编写样式让透明层变得可见。

dialog {
padding: 0;
border: 0;
border-radius: 0.6rem;
box-shadow: 0 0 1em black;
}

dialog::backdrop {
/* make the backdrop a semi-transparent black */
background-color: rgba(0, 0, 0, 0.4);
}

上面代码不仅为<dialog>指定了样式,还将对话框的透明层变成了灰色透明。

<dialog>元素还有一个Dialog.show()方法,也能唤起对话框,但是没有透明层,用户可以与对话框外部的内容互动。

1.3、事件

<dialog>元素有两个事件,可以监听。

  • close:对话框关闭时触发
  • cancel:用户按下esc键关闭对话框时触发

如果希望用户点击透明层,就关闭对话框,可以用下面的代码。

modal.addEventListener('click', (event) => {
if (event.target === modal) {
modal.close('cancelled');
}
});

2、<details>,<summary>

2.1、基本用法

<details>标签用来折叠内容,浏览器会折叠显示该标签的内容。

<details>
这是一段解释文本。
</details>

上面的代码在浏览器里面,会折叠起来,显示Details,前面有一个三角形,就像下面这样。

▶ Details

用户点击这段文本,折叠的文本就会展开,显示详细内容。

▼ Details
这是一段解释文本。

再点击一下,展开的文本又会重新折叠起来。

<details>标签的open属性,用于默认打开折叠。

<details open>
这是一段解释文本。
</details>

上面代码默认打开折叠。

<summary>标签用来定制折叠内容的标题。

<details>
<summary>这是标题</summary>
这是一段解释文本。
</details>

上面的代码显示结果如下。

▶ 这是标题

点击后,展示的效果如下。

▼ 这是标题
这是一段解释文本。

通过 CSS 设置summary::-webkit-details-marker,可以改变标题前面的三角箭头。

summary::-webkit-details-marker {
background: url(https://example.com/foo.svg);
color: transparent;
}

下面的样式是另一种替换箭头的方法。

summary::-webkit-details-marker {
display: none;
}
summary:before {
content: "\2714";
color: #696f7c;
margin-right: 5px;
}

2.2、JavaScript API

Details元素的open属性返回<details>当前是打开还是关闭。

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

if (detail.open === true) {
// 展开状态
} else {
// 折叠状态
}

Details元素有一个toggle事件,打开或关闭折叠时,都会触发这个事件。

details.addEventListener('toggle', event => {
if (details.open) {
/* 展开状况 */
} else {
/* 折叠状态 */
}
});

作者 | 阮一峰

广告
广告图片
温馨提示 : 非特殊注明,否则均为©李联华的博客网原创文章,本站文章未经授权禁止任何形式转载;来自:俄亥俄州·哥伦布 ,欢迎您的访问!
文章链接:https://www.lilianhua.com/html-tutorial-other-tags.html
请先登录才能参与答题
距本场结束剩 00 00 00 00
轻量应用服务器 2核2G
200M峰值带宽,适用于网站搭建、Web应用、容器环境、电商独立站等
立即前往
扫码进入
扫描二维码购买
文澜千文

文澜千文

请登录以使用此功能。

永辉澳门鸡蛋卷原味500g铁盒装休闲零食饼干糕点早餐独立包装澳门特产 永辉澳门鸡蛋卷原味500g铁盒装休闲零食饼干糕点早餐独立包装澳门特产
Loading...
OpenClaw

OpenClaw 龙虾

AI AGENT GATEWAY
在您的服务器部署 OpenClaw,打造专属极速 AI 助手。
零门槛一键部署环境
支持 QQ/飞书/微信 渠道
跨平台指令分发执行
立即安装