基于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 相关文章推荐
文字幻灯片
Jun 26 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
Dec 20 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
XMLHttpRequest Level 2 使用指南
Aug 26 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
记一次vue去除#问题处理经过小结
Jan 24 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
在Chrome DevTools中调试JavaScript的实现
Apr 07 Javascript
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
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删除非空目录的函数代码小结
2013/02/28 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
js/jQuery实现全选效果
2019/06/17 jQuery
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
Python写入数据到MP3文件中的方法
2015/07/10 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
社区综治宣传月活动总结
2014/07/02 职场文书
暑期学习心得体会
2014/09/02 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
导游词之天津古文化街
2019/11/09 职场文书
HttpClient实现文件上传功能
2022/08/14 Java/Android