
效果展示 源码下载
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
.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