基于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 相关文章推荐
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
基于jquery的回到页面顶部按钮
Jun 27 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
Jan 25 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
Feb 05 Javascript
JavaScript实现区块链
Mar 14 Javascript
新手如何快速理解js异步编程
Jun 24 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
Jun 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
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
超级退弹代码
2008/07/07 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
保护野生动物倡议书
2014/05/16 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
暑期学习心得体会
2014/09/02 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
就业推荐表院系意见
2015/06/05 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫