基于jQuery和CSS3制作响应式水平时间轴附源码下载


Posted in Javascript onDecember 20, 2015

我们经常看到有很多的垂直时间轴用来记录事件进展,而有朋友问我要求分享水平的时间轴,其实水平时间轴的难点在于自适应屏幕尺寸。那么 今天我要给大家分享的是一款支持响应式、支持触屏手势滑动的水平时间轴。

基于jQuery和CSS3制作响应式水平时间轴附源码下载

效果展示     源码下载

HTML

我们的HTML结构由两部分组成,div.timeline用于放置日期导航水平线,它有水平多个日期div.events-wrapper和水平轴左右方向导航按钮ul.cd-timeline-navigation组成。而div.events-content放置的是多个日期对应的事件节点,它又多个li元素组成,li元素里面可以放置图片文字等任意HTML内容。注意这两部分的html的li中都有data-date属性,它的值是一个日期,正是通过data-date属性将导航水平线与日期对应的事件内容关联起来的。

<section class="cd-horizontal-timeline"> 
 <div class="timeline"> 
  <div class="events-wrapper"> 
   <div class="events"> 
    <ol> 
     <li><a href="#0" data-date="16/01/2014" class="selected">16 Jan</a></li> 
     <li><a href="#0" data-date="28/02/2014">28 Feb</a></li> 
     <!-- 多个日期 --> 
    </ol> 
    <span class="filling-line" aria-hidden="true"></span> 
   </div> <!-- .events --> 
  </div> <!-- .events-wrapper --> 
  <ul class="cd-timeline-navigation"> 
   <li><a href="#0" class="prev inactive">Prev</a></li> 
   <li><a href="#0" class="next">Next</a></li> 
  </ul> <!-- .cd-timeline-navigation --> 
 </div> <!-- .timeline --> 
 <div class="events-content"> 
  <ol> 
   <li class="selected" data-date="16/01/2014"> 
    <h2>标题</h2> 
    <em>January 16th, 2014</em> 
    <p>  
     文字或者图片等任意HTML内容 
    </p> 
   </li> 
   <li data-date="28/02/2014"> 
    <!-- 对应日期的事件描述信息 --> 
   </li> 
   <!-- 多个日期事件 --> 
  </ol> 
 </div> 
</section>

CSS

来看时间轴事件的css设计,所有的事件节点初始都在视图之外,就是看不到的,除了.selected当前选中的日期节点。我们使用.enter-right/.enter-left来为事件节点进入视图时添加动画,使用.leave-right/.leave-left来为事件节点离开视图时添加动画。本例运用了很多CSS3动画效果,请看代码:

.cd-horizontal-timeline .events-content { 
 position: relative; 
} 
.cd-horizontal-timeline .events-content li { 
 position: absolute; 
 z-index: 1; 
 width: 100%; 
 left: 0; 
 top: 0; 
 transform: translateX(-100%); 
 opacity: 0; 
 animation-duration: 0.4s; 
 animation-timing-function: ease-in-out; 
} 
.cd-horizontal-timeline .events-content li.selected { 
 /* visible event content */ 
 position: relative; 
 z-index: 2; 
 opacity: 1; 
 transform: translateX(0); 
} 
.cd-horizontal-timeline .events-content li.enter-right, 
.cd-horizontal-timeline .events-content li.leave-right { 
 animation-name: cd-enter-right; 
} 
.cd-horizontal-timeline .events-content li.enter-left, 
.cd-horizontal-timeline .events-content li.leave-left { 
 animation-name: cd-enter-left; 
} 
.cd-horizontal-timeline .events-content li.leave-right, 
.cd-horizontal-timeline .events-content li.leave-left { 
 animation-direction: reverse; 
} 
@keyframes cd-enter-right { 
 0% { 
 opacity: 0; 
 transform: translateX(100%); 
 } 
 100% { 
 opacity: 1; 
 transform: translateX(0%); 
 } 
} 
@keyframes cd-enter-left { 
 0% { 
 opacity: 0; 
 transform: translateX(-100%); 
 } 
 100% { 
 opacity: 1; 
 transform: translateX(0%); 
 } 
}

JS

在main.js中,根据每两个日期之间间隔的长短来调整日期导航条上两个日期节点的距离,当然要设置一个最小值(px),以及根据data-date属性获取日期,并将日期做格式化处理。使用jQuery实现点击左右导航按钮来实现事件内容的滑动效果,具体代码由于比较多,就不在这里占用篇幅了,请大家下载源码查看main.js里的代码详情,不做任何修改直接可以拿去应用到你的项目中去。

Javascript 相关文章推荐
一段好玩的JavaScript代码
Dec 01 Javascript
番茄的表单验证类代码修改版
Jul 18 Javascript
js 弹出菜单/窗口效果
Oct 30 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
May 11 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
jquery+ajax请求且带返回值的代码
Aug 12 Javascript
AngularJS表单验证中级篇(3)
Sep 28 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
jQuery mobile 移动web(4)
Dec 20 #Javascript
基于jQuery实现放大镜特效
Oct 19 #Javascript
jQuery mobile 移动web(6)
Dec 20 #Javascript
jquery mobile 移动web(5)
Dec 20 #Javascript
js倒计时抢购实例
Dec 20 #Javascript
js代码实现点击按钮出现60秒倒计时
Jan 28 #Javascript
js实现无缝滚动特效
Dec 20 #Javascript
You might like
深入密码加salt原理的分析
2013/06/06 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
js以及jquery实现手风琴效果
2020/04/17 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python设计模式之抽象工厂模式
2016/08/25 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
Python交互式图形编程的实现
2019/07/25 Python
Python datetime包函数简单介绍
2019/08/28 Python
在keras中实现查看其训练loss值
2020/06/16 Python
什么是封装
2013/03/26 面试题
网络宣传方案
2014/03/15 职场文书
年终奖发放方案
2014/06/02 职场文书
2014年网管工作总结
2014/12/11 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
员工福利申请报告
2015/05/15 职场文书
Java spring单点登录系统
2021/09/04 Java/Android
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript