基于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 相关文章推荐
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
jquery mobile实现拨打电话功能的几种方法
Aug 05 Javascript
jQuery ajax serialize() 方法使用示例
Nov 02 Javascript
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 Javascript
详解jQuery-each()方法
Mar 13 jQuery
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 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保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php实现多城市切换特效
2015/08/09 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
医院后勤自我鉴定
2013/10/13 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
水电工岗位职责
2015/02/14 职场文书
建国大业观后感800字
2015/06/01 职场文书
html粘性页脚的具体使用
2022/01/18 HTML / CSS
ICOM R71E和R72E图文对比解说
2022/04/07 无线电