使用 <details> 和 <summary> 标签可实现语义化、无障碍、无需JavaScript的HTML折叠摘要功能,支持默认展开、自定义样式与图标,并提升可访问性和SEO。

主要通过
<details>
<summary>
<summary>
在HTML中,如果你想为文档的一部分内容提供一个可折叠的摘要,最直接且语义化的方式就是使用
<details>
<summary>
<details>
<summary>
<summary>
<details>
举个例子:
立即学习“前端免费学习笔记(深入)”;
<details>
<summary>点击这里查看更多关于HTML摘要标签的用法</summary>
<p>HTML的摘要标签,即<code><summary></code>,必须作为<code><details></code>元素的第一个子元素出现。它定义了<code><details></code>元素中可见的标题。</p>
<p>如果没有<code><summary></code>标签,浏览器会提供一个默认的“详细信息”或“Details”文本作为摘要。</p>
<ul>
<li>它非常适合FAQ(常见问题)列表。</li>
<li>或者用于折叠较长的内容块,保持页面整洁。</li>
<li>甚至可以用于构建简单的手风琴效果。</li>
</ul>
</details>这段代码会渲染出一个带有“点击这里查看更多关于HTML摘要标签的用法”文本的标题。点击这个标题,下面的段落和列表就会展开。这比起用JavaScript去控制
display: none/block
<details>
<summary>
我经常看到一些开发者为了实现内容的展开/折叠效果,会倾向于自己写JavaScript来控制元素的
display
<details>
<summary>
首先,也是最重要的一点,是语义化。
details
summary
summary
div
onclick
其次,减少JavaScript依赖。这意味着更少的代码量,更快的页面加载速度,以及更低的维护成本。你不需要担心各种事件监听、状态管理,浏览器已经帮你处理了这些。对于那些不需要复杂交互的场景,原生标签简直是福音。想想看,如果用户的浏览器禁用了JavaScript,或者JS加载失败了,你自定义的折叠功能可能就废了,但
<details>
再来,浏览器兼容性其实已经相当不错了。现代浏览器对这组标签的支持度非常高,你基本不用担心兼容性问题。如果真的要考虑旧版IE,那可能需要一些polyfill,但那也是少数情况了。
所以,在我看来,除非你需要非常定制化的展开/折叠动画或复杂逻辑,否则
<details>
<summary>
<details>
<summary>
原生
<details>
<summary>
最常见的一个需求就是去除或替换默认的箭头图标。你可以通过
summary::-webkit-details-marker
summary::marker
/* 隐藏默认箭头 */
summary::-webkit-details-marker {
display: none; /* 或者 visibility: hidden; */
}
summary::marker {
display: none;
}
/* 隐藏IE/Edge的默认图标(如果存在) */
details > summary {
list-style: none; /* 移除列表样式,可能对某些浏览器有效 */
}隐藏了默认箭头后,你就可以自定义自己的指示图标了。通常,我们会利用伪元素
::before
::after
<details>
open
details {
border: 1px solid #eee;
padding: 10px;
margin-bottom: 10px;
border-radius: 4px;
}
summary {
font-weight: bold;
cursor: pointer;
padding: 5px 0;
outline: none; /* 移除点击时的焦点框 */
position: relative;
list-style: none; /* 再次强调移除默认列表样式 */
}
/* 自定义展开/折叠图标 */
summary::before {
content: '▶'; /* 默认是向右的箭头 */
display: inline-block;
margin-right: 8px;
transition: transform 0.2s ease;
}
details[open] summary::before {
content: '▼'; /* 展开时变为向下的箭头 */
transform: rotate(0deg); /* 确保旋转归零,或者直接用新字符 */
}
/* 更多样式,比如hover效果 */
summary:hover {
color: #007bff;
}
details p {
padding-top: 10px;
line-height: 1.6;
color: #555;
}通过这些CSS,你可以完全掌控
<details>
<summary>
<details>
<details>
<summary>
虽然
<details>
<summary>
一个很重要的点是无障碍性(Accessibility)。正如前面提到的,这对标签本身就具有良好的语义,这为辅助技术提供了基础。但我们作为开发者,还可以做得更好。确保
summary
summary
其次,是open
<details>
open
<details open> <summary>这个部分默认是展开的</summary> <p>用户无需点击即可看到这段内容。</p> </details>
我个人经验是,不要滥用
open
再来,嵌套 <details>
<details>
<details>
最后,一个潜在的“坑”在于动画效果。原生
<details>
transition
details
details
display
none
max-height
transition
总的来说,
<details>
<summary>
以上就是HTML文档摘要怎么添加_HTML摘要标签使用教程的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号