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

news2024/10/6 2:29:33

891d3c5b189f56ceb8ec085ac19a86d6.jpeg

今天,我要和大家分享一个使用 HTML5 新标签 <details> 制作 Accordion(手风琴)组件的源码。通过这个源码,你可以快速掌握如何在网页中实现可折叠的问答列表功能,非常适合用于 FAQ 页面。

案例展示

案例效果,如下图所示:

6595aa8625054164030e25565d46a2f1.gif

了解 <details> 和 <summary> 标签

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

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

  • <summary>:这个标签用作 <details> 的标题。点击这个标题可以展开或折叠其后的内容。

HTML 部分

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

<!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 组件:

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:设置了图标的样式和过渡效果,使得在展开和折叠时有更好的视觉体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于豆瓣电影TOP250的可视化设计

本文要完成的目的&#xff0c;实现豆瓣电影TOP250的可视化 思路 讲解思路&#xff0c;采用倒推的方式&#xff0c; 首先确定可视化图表&#xff0c;也就是最终的效果。这样就能确定需要那些基础数据根据需要的数据进行按需爬取存储。 本篇文章完成前两步。可视化图表设计 和 …

yolov7报错:报错 For debugging consider passing CUDA_LAUNCH_BLOCKING=1

报错信息 RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING1.解决方法&#xff1a; 原因…

[图解]建模相关的基础知识-17

1 00:00:00,190 --> 00:00:09,650 那么1、2、5这个地方&#xff0c;这几个它都需要修改 2 00:00:09,660 --> 00:00:11,410 都要改成资金管理部 3 00:00:13,340 --> 00:00:15,020 那么违反第三范式 4 00:00:15,030 --> 00:00:19,650 是一个比较严重的问题 5 00:…

SVN学习(005 subversive操作分支)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第43p-第p53的内容 介绍 创建相关目录 创建一个工程 分享到服务器端 将工程放到trunk文件夹下 在svn服务器上的位置 在branches下添加文件夹&#xff08;用于作为分支&#xff09; 创建代码分支 切换分支…

2024年6月23日

1.PPT学习赋能 调整到1907 2.动漫协会 完成 3.数据库 完成 4.慕课 完成 5.学习强国 刷满 虚伪的设计也应该提上日程了 Neo4j是一款高性能的图数据库&#xff0c;专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构&#xff0c;非常适用于表示和查询复杂的实体…

ONLYOFFICE 8.1版本桌面编辑器测评

在现代办公环境中&#xff0c;选择一款功能强大且高效的办公套件至关重要。随着技术的不断进步&#xff0c;ONLYOFFICE 8.1 版本桌面编辑器以其丰富的功能和用户友好的界面成为了众多用户的首选。本文将对ONLYOFFICE 8.1版本进行详细测评&#xff0c;帮助读者了解其最新特性和优…

MUR4060PT-ASEMI逆变焊机MUR4060PT

编辑&#xff1a;ll MUR4060PT-ASEMI逆变焊机MUR4060PT 型号&#xff1a;MUR4060PT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 恢复时间&#xff1a;35ns 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&#x…

Web渗透:文件上传漏洞

文件上传漏洞&#xff08;File Upload Vulnerability&#xff09;是网络安全中的一种常见漏洞&#xff0c;攻击者可以通过此漏洞将恶意文件上传到服务器&#xff0c;从而执行任意代码、覆盖重要文件、或进行其他恶意操作。这种漏洞可能带来严重的安全风险&#xff0c;包括数据泄…

leetcode每日一题第117天

class Solution { public:int kthToLast(ListNode* head, int k) {ListNode* slow head;ListNode* fast head;for(int i 0;i<k;i){fast fast->next;}while(fast){slow slow->next;fast fast->next;}return slow->val;} };

bable 【实用教程】

简介 bable 用于将 ES6 的语法编译为 ES5 只关心语法&#xff0c;不关心 API 是否正确。不处理模块化&#xff08;webpack 会处理&#xff09; 搭建开发环境 安装相关的包 npm i babel/cli babel/core babel/preset-env新建文件 .babelrc&#xff0c;内容为 { "presets…

探秘分布式一致性(共识)算法 :Raft

1.前言 Raft 算法是 Multi-Paxos 算法的一种&#xff0c;是一种强一致性算法。核心就是通过日志复制的方式达到整个集群的副本一致。 Raft 算法的三个核心概念就是 Leader 的选举、日志复制、节点变更。本文也将从这三个方面进行探讨。之后再聊聊 Raft 算法的几个应用场景。 2.…

Docker(七)-Docker容器数据卷

1.容器数据卷是什么 卷就是目录或者文件&#xff0c;存在于一个或者多个容器中&#xff0c;由docker挂载到容器&#xff0c;不属于容器内(类似于笔记本电脑外的一个移动硬盘)。 卷的设计目的就是数据持久化&#xff0c;完全独立于容器的生存周期&#xff0c;因此Docker不会在容…

java基于ssm+jsp 师生交流平台

1 管理员登录 管理员输入个人的账号、密码登录系统&#xff0c;这时候系统的数据库就会在进行查找相关的信息&#xff0c;如果我们输入的账号、密码不正确&#xff0c;数据库就会提示出错误的信息提示&#xff0c;同时会提示管理员重新输入自己的账号、密码&#xff0c;直到账…

css3新增了选择器,还有人不知道吗?

伪元素选择器 示例 结语 前言 CSS3给我们新增了选择器&#xff0c;可以更加便捷&#xff0c;更加自由的选择目标元素&#xff0c;你还不知道吗&#xff1f; 属性选择器 属性选择器可以根据元素特定属性的来选择元素。这样就可以不用借助于类或者 id 选择器。 | 选择符 | …

.tar格式软核文件如何在Xplorer的安装

.tar格式软核文件如何在Xplorer的安装 一&#xff0c;简介二&#xff0c;官方软核安装指导三&#xff0c;.tar和.tgz格式文件转换四&#xff0c;总结 一&#xff0c;简介 本文主要介绍.tar格式的软核文件如何在Xplorer中进行安装&#xff0c;供参考。 二&#xff0c;官方软核…

惠普Hp激光打印机Laser MFP 1136w驱动下载,驱动安装过程中显示‘参数无效’解决办法,打开Print Spooler

Hp Laser MFP 1136w打印机驱动下载官网&#xff1a; https://support.hp.com/cn-zh/drivers/hp-laser-mfp-1000-printer-series/model/2101513884 官网上显示有固件和驱动程序&#xff0c;固件不管&#xff0c;选择驱动程序中的全功能解决方案&#xff0c;进行下载安装 在安装…

【办公技巧】Excel选项按钮,如何设置?

excel表格制作时可能会&#xff0c;需要用到勾选、选中的选项按钮&#xff0c;那么这个该如何设置&#xff1f;今天我们一起学习一下设置方法。 首先&#xff0c;我们需要先在excel工具栏中添加一个功能模块&#xff1a;开发工具 依次点击excel中的文件 – 选项 – 自定义功能…

【问chatgpt】

这采用的是什么脚手架初始化的&#xff1f;这样问询chatgpt 从文件结构来看&#xff0c;这个项目很可能是使用 Express 框架初始化的。这些文件夹和命名约定常见于 Express 项目结构&#xff0c;特别是&#xff1a; controllers: 控制器文件夹&#xff0c;通常用于处理请求逻…

【服务器02】之【阿里云平台】

百度一下阿里云官网 点击注册直接使用支付宝注册可以跳过认证 成功登录后&#xff0c;点击产品 点击免费试用 点击勾选 选一个距离最近的 点满GB 注意&#xff1a;一般试用的时用的是【阿里云】&#xff0c;真正做项目时用的是【腾讯云】 现在开始学习使用&#xff1a; 首先…

域名被劫持怎么办

域名劫持是指黑客通过篡改域名解析的过程&#xff0c;将原本属于某个域名的IP地址指向其它恶意网站或服务器的行为。这种攻击方式常用于网络钓鱼、广告投放等非法活动。 定义 域名劫持就是在劫持的网络范围内拦截域名解析的请求&#xff0c;分析请求的域名&#xff0c;把审查…