前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 HTML5 新标签 <details> 制作 Accordion 组件(赠送3个相关案例源码)

使用 HTML5 新标签 <details> 制作 Accordion 组件(赠送3个相关案例源码)

作者头像
前端达人
发布2024-06-26 09:53:02
950
发布2024-06-26 09:53:02
举报
文章被收录于专栏:前端达人
今天,我要和大家分享一个使用 HTML5 新标签 <details> 制作 Accordion(手风琴)组件的源码。通过这个源码,你可以快速掌握如何在网页中实现可折叠的问答列表功能,非常适合用于 FAQ 页面。

案例展示

案例效果,如下图所示:

了解 <details> 和 <summary> 标签

HTML5 引入了很多新的标签,其中就包括 <details> 和 <summary> 标签。使用这两个标签,我们可以很方便地实现内容的展开和折叠功能。下面我们来详细介绍一下它们的用法。

  • <details>:这个标签用于包裹可折叠的内容。默认情况下,内容是折叠的,用户点击时可以展开。
  • <summary>:这个标签用作 <details> 的标题。点击这个标题可以展开或折叠其后的内容。

HTML 部分

首先,我们来看一下 HTML 部分的代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Accordion 01</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet" type='text/css'>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="faq-container">
        <details>
            <summary>
                <span class="faq-title">How long does the course take?</span>
                <img src="assets/plus.svg" class="expand-icon" alt="Plus">
            </summary>
            <div class="faq-content">The video content takes more than 4.5 hours. ...</div>
        </details>
        <details>
            <summary>
                <span class="faq-title">Who teaches courses on Atheros Learning?</span>
                <img src="assets/plus.svg" class="expand-icon" alt="Plus">
            </summary>
            <div class="faq-content">The authors of the courses are mostly ...</div>
        </details>
        <!-- 继续添加其他 details 元素 -->
    </div>
    <script src="script.js"></script>
</body>
</html>

在这个 HTML 代码中,我们使用了 <details> 和 <summary> 标签来创建可折叠的问答部分。当用户点击 <summary> 部分时,对应的内容会展开或折叠。每个 <details> 标签包含一个 <summary> 和一个 <div>,用于显示具体的问答内容。

CSS 部分

接下来是 CSS 样式部分,用于美化我们的 Accordion 组件:

代码语言:javascript
复制
html {
    font-size: 16px;
    font-family: "Poppins";
}

body {
    background: white;
    height: 100%;
}

* {
    box-sizing: border-box;
}

.faq-container {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 12em;
}

details {
    font-size: 1rem;
    margin: 0 auto;
    width: 100%;
    background: #F6FAFF;
    border-radius: 0.5rem;
    position: relative;
    max-width: 600px;
    border: 1px solid #C3DEFF;
    transition: all 0.3s ease-in-out;
}

details:hover {
    border: 1px solid #A4A1FF;
}

summary {
    user-select: none;
    cursor: pointer;
    font-weight: 600;
    display: flex;
    list-style: none;
    padding: 1rem;
    align-items: center;
}

summary:hover .faq-title {
    opacity: 1;
}

summary::-webkit-details-marker {
    display: none;
}

summary:focus {
    outline: none;
}

summary:hover .expand-icon {
    opacity: 1;
}

.faq-title {
    color: #1C2035;
    width: 90%;
    opacity: 0.65;
    transition: all 250ms ease-in-out;
}

.faq-content {
    color: #303651;
    padding: 0.2rem 1rem 1rem 1rem;
    font-weight: 300;
    line-height: 1.5;
}

.expand-icon {
    opacity: 0.65;
    pointer-events: none;
    position: absolute;
    right: 1rem;
    transition: all 150ms ease-out;
}

这些样式定义了 Accordion 组件的外观,包括背景颜色、字体样式、边框、悬停效果等。让我们逐步解析每一个重要的部分:

  • .faq-container:定义了一个容器,用于包裹所有的 FAQ 项。我们使用了 flex 布局来垂直排列这些项,并设置了一个上边距,让内容居中。
  • details:设置了每个 details 标签的样式,包括背景色、边框、圆角和过渡效果。当鼠标悬停时,边框颜色会发生变化。
  • summary:定义了 summary 标签的样式,包括鼠标指针、字体加粗、内部对齐等。还隐藏了默认的 marker(箭头)。
  • .faq-title .faq-content:分别设置了标题和内容的样式,使其更加美观和易读。
  • .expand-icon:设置了图标的样式和过渡效果,使得在展开和折叠时有更好的视觉体验。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例展示
  • 了解 <details> 和 <summary> 标签
  • HTML 部分
  • CSS 部分
相关产品与服务
标签
标签(Tag)是腾讯云推出的云资源管理工具,您可从不同维度对具有相同特征的云资源进行分类、搜索和聚合,从而轻松管理云上资源。 标签是由标签键和标签值共同组成,您可以为云资源创建和绑定标签
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档