欢迎光临新沂市中国丧葬服务网
详情描述
HTML5 details标签实现展开/收缩信息

我将创建一个使用HTML5 <details>标签的展开/收缩信息组件,并添加一些美观的样式和实际使用示例。

设计思路

  • 使用原生的<details><summary>标签
  • 添加自定义样式增强视觉体验
  • 创建不同类型的示例展示其应用场景
  • 添加交互效果提升用户体验

下面是完整的实现代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML5 details标签:展开/收缩信息</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
        }

        body {
            background-color: #f7f9fc;
            color: #333;
            line-height: 1.6;
            padding: 20px;
            max-width: 1200px;
            margin: 0 auto;
        }

        header {
            text-align: center;
            padding: 40px 20px;
            background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
            color: white;
            border-radius: 15px;
            margin-bottom: 40px;
            box-shadow: 0 10px 30px rgba(106, 17, 203, 0.2);
        }

        h1 {
            font-size: 2.8rem;
            margin-bottom: 15px;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
        }

        .subtitle {
            font-size: 1.2rem;
            opacity: 0.9;
            max-width: 700px;
            margin: 0 auto;
        }

        .content {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 30px;
            margin-bottom: 40px;
        }

        .card {
            background-color: white;
            border-radius: 12px;
            padding: 25px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }

        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 12px 20px rgba(0, 0, 0, 0.12);
        }

        .card h2 {
            color: #2c3e50;
            margin-bottom: 20px;
            padding-bottom: 12px;
            border-bottom: 2px solid #f0f2f5;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .card h2 i {
            color: #6a11cb;
        }

        .intro {
            font-size: 1.1rem;
            margin-bottom: 25px;
            line-height: 1.8;
            color: #555;
        }

        /* details默认样式 */
        details {
            margin-bottom: 15px;
            border-radius: 8px;
            overflow: hidden;
            border: 1px solid #e1e5eb;
            transition: all 0.3s ease;
        }

        details:hover {
            border-color: #a8c6ff;
        }

        /* summary样式 */
        summary {
            padding: 18px 20px;
            background-color: #f8fafd;
            cursor: pointer;
            font-weight: 600;
            font-size: 1.1rem;
            color: #2c3e50;
            list-style: none;
            position: relative;
            transition: background-color 0.3s ease;
        }

        summary:hover {
            background-color: #f0f5ff;
        }

        /* 自定义summary标记 */
        summary::-webkit-details-marker {
            display: none;
        }

        summary::after {
            content: '+';
            position: absolute;
            right: 20px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 1.5rem;
            font-weight: 300;
            color: #6a11cb;
            transition: transform 0.3s ease;
        }

        details[open] summary::after {
            content: '-';
            transform: translateY(-50%) rotate(0deg);
        }

        /* details内容样式 */
        .details-content {
            padding: 25px;
            background-color: white;
            border-top: 1px solid #eef2f7;
            color: #4a5568;
        }

        .details-content h3 {
            color: #2d3748;
            margin-bottom: 12px;
            font-size: 1.3rem;
        }

        .details-content p {
            margin-bottom: 15px;
        }

        .details-content ul, .details-content ol {
            padding-left: 20px;
            margin-bottom: 15px;
        }

        .details-content li {
            margin-bottom: 8px;
        }

        .code-example {
            background-color: #f8f9fa;
            padding: 15px;
            border-radius: 6px;
            border-left: 4px solid #6a11cb;
            font-family: 'Courier New', monospace;
            font-size: 0.95rem;
            overflow-x: auto;
            margin-top: 15px;
        }

        .code-example code {
            color: #d63384;
        }

        .faq-item details {
            background-color: #f9f9f9;
        }

        .faq-item summary {
            background-color: #f0f7ff;
        }

        .tip {
            background-color: #e8f4fd;
            border-left: 4px solid #2196F3;
            padding: 15px;
            margin-top: 20px;
            border-radius: 0 8px 8px 0;
        }

        .tip h4 {
            color: #0d47a1;
            margin-bottom: 8px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        footer {
            text-align: center;
            margin-top: 50px;
            padding: 25px;
            color: #666;
            border-top: 1px solid #eaeaea;
            font-size: 0.95rem;
        }

        @media (max-width: 768px) {
            .content {
                grid-template-columns: 1fr;
            }

            h1 {
                font-size: 2.2rem;
            }

            .card {
                padding: 20px;
            }
        }

        .highlight {
            color: #6a11cb;
            font-weight: 600;
        }
    </style>
</head>
<body>
    <header>
        <h1>HTML5 &lt;details&gt; 标签</h1>
        <p class="subtitle">使用原生HTML5元素创建可展开/收缩的内容区域,无需JavaScript</p>
    </header>

    <main>
        <section class="intro">
            <p><span class="highlight">&lt;details&gt;</span> 是HTML5中的一个新元素,用于创建可展开和折叠的内容区域。它通常与 <span class="highlight">&lt;summary&gt;</span> 元素一起使用,后者为details元素提供标题或摘要。当用户点击summary元素时,details元素的内容会在显示和隐藏之间切换。</p>
        </section>

        <div class="content">
            <!-- 基础用法 -->
            <div class="card">
                <h2><i class="fas fa-code"></i> 基础用法</h2>
                <p>最简单的details标签使用示例:</p>

                <details>
                    <summary>点击查看详细信息</summary>
                    <div class="details-content">
                        <p>这是被隐藏的详细信息内容。当用户点击summary元素时,这部分内容会显示出来。</p>
                        <p>这是一个完全使用HTML5原生元素实现的功能,无需任何JavaScript代码。</p>
                    </div>
                </details>

                <details>
                    <summary>HTML5新特性介绍</summary>
                    <div class="details-content">
                        <h3>HTML5 主要新特性</h3>
                        <ul>
                            <li>语义化标签(如header, footer, section, article等)</li>
                            <li>音频视频支持(audio, video标签)</li>
                            <li>Canvas绘图</li>
                            <li>本地存储(localStorage, sessionStorage)</li>
                            <li>地理位置API</li>
                            <li>Web Workers(多线程处理)</li>
                        </ul>
                    </div>
                </details>

                <div class="code-example">
                    <pre><code>&lt;details&gt;
  &lt;summary&gt;点击查看详细信息&lt;/summary&gt;
  &lt;div&gt;
    &lt;p&gt;这是被隐藏的详细信息内容。&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;</code></pre>
                </div>
            </div>

            <!-- 常见应用 -->
            <div class="card">
                <h2><i class="fas fa-layer-group"></i> 常见应用场景</h2>
                <p>details标签在多种场景下都非常有用:</p>

                <details class="faq-item">
                    <summary>常见问题解答 (FAQ)</summary>
                    <div class="details-content">
                        <h3>什么是HTML5?</h3>
                        <p>HTML5是HTML的最新版本,于2014年10月由W3C完成标准制定。它增加了许多新特性,使Web应用开发更加方便。</p>

                        <h3>details标签的浏览器兼容性如何?</h3>
                        <p>details标签在所有现代浏览器中都得到良好支持,包括Chrome、Firefox、Safari和Edge。对于旧版浏览器,可以使用polyfill提供支持。</p>

                        <h3>details标签可以嵌套使用吗?</h3>
                        <p>是的,details标签可以嵌套使用,创建多级展开/收缩内容。</p>
                    </div>
                </details>

                <details>
                    <summary>产品功能说明</summary>
                    <div class="details-content">
                        <h3>高级功能</h3>
                        <ol>
                            <li>实时数据同步</li>
                            <li>多设备兼容</li>
                            <li>云端存储</li>
                            <li>团队协作工具</li>
                            <li>高级安全设置</li>
                        </ol>
                    </div>
                </details>

                <details>
                    <summary>操作步骤指南</summary>
                    <div class="details-content">
                        <h3>安装与配置</h3>
                        <p>1. 下载安装包并解压到本地目录</p>
                        <p>2. 运行安装程序,按照提示完成安装</p>
                        <p>3. 启动应用程序,完成初始配置</p>
                        <p>4. 登录账户,开始使用</p>
                    </div>
                </details>
            </div>

            <!-- 高级示例 -->
            <div class="card">
                <h2><i class="fas fa-cogs"></i> 高级示例</h2>
                <p>嵌套details和默认展开状态示例:</p>

                <details open>
                    <summary>默认展开的内容</summary>
                    <div class="details-content">
                        <p>这个details元素使用了<code>open</code>属性,所以初始状态是展开的。</p>

                        <details>
                            <summary>嵌套的details元素</summary>
                            <div class="details-content">
                                <p>这是一个嵌套的details元素,可以创建多级展开/收缩内容。</p>

                                <details>
                                    <summary>第三级details</summary>
                                    <div class="details-content">
                                        <p>第三级的details内容。</p>
                                    </div>
                                </details>
                            </div>
                        </details>
                    </div>
                </details>

                <details>
                    <summary>代码示例展示</summary>
                    <div class="details-content">
                        <h3>details标签属性</h3>
                        <p><strong>open</strong>:布尔属性,如果存在,表示details内容默认可见</p>

                        <div class="code-example">
                            <pre><code>&lt;!-- 默认展开的details --&gt;
&lt;details open&gt;
  &lt;summary&gt;默认展开的内容&lt;/summary&gt;
  &lt;p&gt;这个details默认是展开状态&lt;/p&gt;
&lt;/details&gt;

&lt;!-- 嵌套details --&gt;
&lt;details&gt;
  &lt;summary&gt;外层内容&lt;/summary&gt;
  &lt;p&gt;外层文本&lt;/p&gt;
  &lt;details&gt;
    &lt;summary&gt;内层内容&lt;/summary&gt;
    &lt;p&gt;内层文本&lt;/p&gt;
  &lt;/details&gt;
&lt;/details&gt;</code></pre>
                        </div>
                    </div>
                </details>
            </div>
        </div>

        <div class="tip">
            <h4><i class="fas fa-lightbulb"></i> 使用提示</h4>
            <p><strong>details标签的默认标记</strong>:在大多数浏览器中,summary元素左侧会有一个小三角形标记。可以使用CSS的<code>summary::-webkit-details-marker</code>和<code>summary::marker</code>来自定义或隐藏这个标记。</p>
            <p><strong>无障碍访问</strong>:details元素默认具有很好的无障碍访问支持,屏幕阅读器可以识别其展开/收缩状态。</p>
            <p><strong>JavaScript交互</strong>:虽然details元素不需要JavaScript即可工作,但你仍然可以通过JavaScript监听<code>toggle</code>事件来增强交互功能。</p>
        </div>
    </main>

    <footer>
        <p>HTML5 details标签示例 &copy; 2023 | 无需JavaScript的展开/收缩内容解决方案</p>
        <p>兼容现代浏览器,优雅降级方案可供旧版浏览器使用</p>
    </footer>

    <script>
        // 添加一些简单的交互效果
        document.addEventListener('DOMContentLoaded', function() {
            // 为所有details元素添加toggle事件监听
            const allDetails = document.querySelectorAll('details');

            allDetails.forEach(detail => {
                detail.addEventListener('toggle', function() {
                    // 添加简单的动画效果
                    if (this.open) {
                        console.log('Details expanded:', this.querySelector('summary').textContent);
                    } else {
                        console.log('Details collapsed:', this.querySelector('summary').textContent);
                    }
                });
            });

            // 显示当前details使用数量
            const detailsCount = document.querySelectorAll('details').length;
            const footer = document.querySelector('footer');
            const countElement = document.createElement('p');
            countElement.textContent = `本页面共使用 ${detailsCount} 个details元素`;
            countElement.style.marginTop = '10px';
            countElement.style.fontSize = '0.9em';
            countElement.style.color = '#888';
            footer.appendChild(countElement);
        });
    </script>
</body>
</html>

功能说明

这个页面展示了HTML5 <details>标签的各种用法:

基础用法 - 展示了简单的展开/收缩效果 常见应用场景 - 包括FAQ、产品功能说明、操作指南等 高级示例 - 展示了嵌套details和默认展开状态 代码示例 - 提供了HTML代码片段供参考 使用提示 - 提供了关于自定义样式和无障碍访问的提示

技术特点

  • 完全使用原生HTML5 <details><summary>标签
  • 响应式设计,适应各种屏幕尺寸
  • 自定义CSS样式,提升视觉体验
  • 添加了简单的JavaScript交互效果
  • 包含了代码示例和实用提示

页面加载后,您可以直接点击各个标题来查看展开和收缩的效果,无需任何JavaScript即可工作。

相关帖子
紫草在历史长河中的足迹:不同朝代对它的记载与应用变迁
紫草在历史长河中的足迹:不同朝代对它的记载与应用变迁
新沂市网站开发设计@精准获客软件,定制建站
新沂市网站开发设计@精准获客软件,定制建站
除了江河湖海,地球的“隐藏水”藏在哪?地下水与土壤水的神秘世界
除了江河湖海,地球的“隐藏水”藏在哪?地下水与土壤水的神秘世界
解密鸬鹚的生存智慧:潜水捕鱼的独特技能与湿地生态中的角色
解密鸬鹚的生存智慧:潜水捕鱼的独特技能与湿地生态中的角色
新沂市网站开发建设#精准获客引流,企业解决方案
新沂市网站开发建设#精准获客引流,企业解决方案
长护险制度覆盖全国,会如何改变我们对“老年生活”的想象?
长护险制度覆盖全国,会如何改变我们对“老年生活”的想象?
2026年正月理发到底有什么传统习俗的由来与具体说法?
2026年正月理发到底有什么传统习俗的由来与具体说法?
在边境互市点购买进口食品,需要注意查看哪些标签和检验检疫证明?
在边境互市点购买进口食品,需要注意查看哪些标签和检验检疫证明?
关于器官捐献,社会上存在哪些常见的误解,我们又该如何客观看待这些说法?
关于器官捐献,社会上存在哪些常见的误解,我们又该如何客观看待这些说法?
从成长角度看,完全依靠自己买房的过程能带来哪些不同的收获?
从成长角度看,完全依靠自己买房的过程能带来哪些不同的收获?
株洲市丧葬一条龙价格-丧事白事一条龙服务,价格透明
株洲市丧葬一条龙价格-丧事白事一条龙服务,价格透明
如何理解工会“职工之家”的概念,它在构建和谐工作环境中扮演什么角色?
如何理解工会“职工之家”的概念,它在构建和谐工作环境中扮演什么角色?
linux安装mysql8.0全过程
linux安装mysql8.0全过程
Nginx服务器部署详细代码实例
Nginx服务器部署详细代码实例
当青少年出现兴趣减退和沉默寡言时,家长该如何进行初步的沟通与引导?
当青少年出现兴趣减退和沉默寡言时,家长该如何进行初步的沟通与引导?
直播带货中,主播与品牌方签订的推广合同应注意哪些关键条款以保护双方?
直播带货中,主播与品牌方签订的推广合同应注意哪些关键条款以保护双方?
保障性租赁住房允许租客进行简单的个性化装饰或墙面改造吗?
保障性租赁住房允许租客进行简单的个性化装饰或墙面改造吗?
随州市网站开发制作服务%企业商城建设,专业设计团队
随州市网站开发制作服务%企业商城建设,专业设计团队
2026年失业金政策中,“非因本人意愿中断就业”具体包括哪些情形?
2026年失业金政策中,“非因本人意愿中断就业”具体包括哪些情形?