基于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 相关文章推荐
jquery animate 动画效果使用说明
Nov 04 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
Dec 28 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
javascript实现动态模态绑定grid过程代码
Sep 22 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 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
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
mac下安装nginx和php
2013/11/04 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
理解javascript对象继承
2016/04/17 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Python 字符串池化的前提
2020/07/03 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
会计学生自我鉴定
2014/02/06 职场文书
捐书活动倡议书
2015/04/27 职场文书
三八节活动简报
2015/07/20 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python