基于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 相关文章推荐
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
如何重置vue打印变量的显示方式
Dec 06 Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
webpack结合express实现自动刷新的方法
May 07 Javascript
Vue实现图片与文字混输效果
Dec 04 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
vue修改Element的el-table样式的4种方法
Sep 17 Javascript
Vue用mixin合并重复代码的实现
Nov 27 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
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
Js中sort()方法的用法
2006/11/04 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
python生成随机mac地址的方法
2015/03/16 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
Zabbix实现微信报警功能
2016/10/09 Python
python安装Scrapy图文教程
2017/08/14 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
承办会议欢迎词
2014/01/17 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
2014年党支部工作总结
2014/11/13 职场文书
2014年政协工作总结
2014/12/09 职场文书
南湾猴岛导游词
2015/02/09 职场文书
解决 redis 无法远程连接
2022/05/15 Redis