使用 CSS3 和 Vanilla JS 实现的可折叠时间轴

基于 CSS3 和 Vanilla JS 创建可折叠的时间轴,该时间轴支持一键折叠或展开所有时间线项目,也支持单个时间项的折叠与展开,利用该时间轴将帮助你以可视化的组织和交互的方式呈现按时间顺序排列的信息。

下面介绍如何使用 CSS3 和 Vanilla JS 创建可折叠时间轴

1、首先为我们的时间轴设置 HTML 结构。我们需要一个时间线容器元素和每个时间线项的独立元素。每个项目将由标题和主体组成。

<svg display="none">
     <symbol id="arrow">
         <polyline fill="none" points="7 10,12 15,17 10" stroke="currentcolor" stroke-linecap="round"
                   stroke-linejoin="round" stroke-width="2"/>
     </symbol>
 </svg>
 <h1>童哲网发展历程</h1>
 <div class="timeline" id="timeline">
     <div class="btn-group">
         <button class="btn" data-action="expand" type="button">全部展开</button>
         <button class="btn" data-action="collapse" type="button">全部折叠</button>
     </div>
     <div class="timeline__item">
         <div class="timeline__item-header">
             <button aria-controls="item1-ctrld" aria-expanded="false" aria-haspopup="true" aria-labelledby="item1-name"
                     class="timeline__arrow" data-item="1" id="item1" type="button">
                 <svg class="timeline__arrow-icon" height="24px" viewBox="0 0 24 24" width="24px">
                     <use href="#arrow"/>
                 </svg>
             </button>
             <span class="timeline__dot"></span>
             <span class="timeline__meta" id="item1-name">
    <time class="timeline__date" datetime="2023-01-02">2023-01-02</time><br>
    <strong class="timeline__title">网站上线</strong>
</span>
         </div>
         <div aria-hidden="true" aria-labelledby="item1" class="timeline__item-body" id="item1-ctrld" role="region">
             <div class="timeline__item-body-content">
                 <p class="timeline__item-p">🎉🎉🎉,祝贺童哲网上线了
                 </p>
             </div>
         </div>
     </div>
 </div>

2、接下来,让我们在一个单独的 CSS 文件(styles.css)中定义时间线的样式。

/*以下为部分内容,下载后可查阅完整代码*/
.timeline {
	margin: auto;
	padding: 0 1.5em;
	width: 100%;
	max-width: 36em;
}

4.现在,让我们实现 JavaScript 功能,使时间轴可折叠,此脚本将处理用户交互,并作用于时间线项的展开和折叠动画。

/*以下为部分内容,下载后可查阅完整代码*/
window.addEventListener("DOMContentLoaded",() => {
	const ctl = new CollapsibleTimeline("#timeline");
});

最后,你可以在 HTML 文件的 <div id="timeline" class="timeline"> 容器中添加时间线项内容,如下载后的代码所示,每个时间轴项都应有一个标题和一个主体。

模板目录结构如下:
  • 如非特殊说明,本站对本文提供的代码或者素材不拥有任何权利,其版权归原著者拥有。
  • 以上提供的代码或者素材均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
  • 如有侵犯你版权的,请来信(邮箱:tongzhewangluo@163.com)指出,核实后,本站将立即改正。
  • 如有链接无法下载、失效或广告,请通过网站提供的微信联系作者!
  • 以上资源售价只是赞助,不代表代码或者素材本身价格。收取费用仅维持本站的服务器开销!
  • 所有代码素材效果均为演示打包,最终效果请参考演示效果,本站不提供任何技术支持和服务。
  • 代码素材均为虚拟物品,演示和描述无错的情况下,无法进行退换服务。