基于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 相关文章推荐
JS 判断代码全收集
Apr 28 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
javascript实现检验的各种规则
Jul 31 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
微信小程序 wx.request方法的异步封装实例详解
May 18 Javascript
Bootstrap Table使用整理(五)之分页组合查询
Jun 09 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
详解如何在angular2中获取节点
Nov 23 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
php 远程关机操作的代码
2008/12/05 PHP
封装一个PDO数据库操作类代码
2009/09/09 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
关于PHP开发的9条建议
2015/07/27 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
在Django中创建动态视图的教程
2015/07/15 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python 实现try重新执行
2019/12/21 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
管理科学大学生求职信
2013/11/13 职场文书
初中科学教学反思
2014/01/21 职场文书
合作意向书模板
2014/03/31 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
Python实现8种常用抽样方法
2021/06/27 Python