这是一款非常有创意的全屏两栏式垂直滚动幻灯片界面布局UI设计效果。该幻灯片界面设计将整个屏幕分为两栏,在用户向下滚动鼠标时,图片和文字在两边交替出现,非常适合用于制作图文故事效果。
制作方法
HTML结构
该幻灯片界面UI设计的HTML结构中,每一个slide是一个带slide
class的<article>
元素。文字部分的slde使用class slide--text
来标注。幻灯片slide出现的顺序通过ID #slide-n
来标注。
<article id="slide-0" class="slide"> <img src="img/3.jpg"> </article> <article id="slide-1" class="slide slide--text"> <div class="slide__inner"> <p>...</p> </div> </article> ......
CSS样式
每一个slide都使用固定定位方式,大小等于屏幕宽度的50%。并且使用的是左浮动,将它们排列为两栏。接着设置偶数列为右对齐,奇数列为左对齐。
.slide { position: fixed; width: 50%; height: 100%; float: left; overflow: hidden; background-color: #ddd; } .slide:nth-of-type(even) { right: 0; } .slide:nth-of-type(odd) { left: 0; }
.slide--locked
和.slide--sticky
是2个辅助类,用于将slide位置顶部固定。
.slide--locked, .slide--sticky { position: fixed !important; top: 0 !important; }
JAVASCRIPT
在jQuery代码中,实现幻灯片滚动效果的是adjustPositions()
函数。该函数中,首先通过scrollTop()
函数获取元素相对于滚动条的偏移位置。接着通过一个小算法来获取当前slide的索引值,然后使该索引值前面的所有slide停止滚动,位置固定在top:0
的位置。当前slide取消位置固定,添加slide--scrolling
class,使其开始滚动。最后,当前slide后面的所有slide也停止滚动,位置固定在top:0
的位置。
function adjustPositions() { var scrollPosition = $(window).scrollTop(); var scrollingSlide = Math.floor(scrollPosition / windowHeight) + 1; var $scrollingSlide = $('#slide-' + scrollingSlide); $scrollingSlide.prevAll('.slide').removeClass('slide--scrolling').addClass('slide--locked'); $scrollingSlide.removeClass('slide--locked').addClass('slide--scrolling'); $scrollingSlide.nextAll('.slide').removeClass('slide--locked').removeClass('slide--scrolling'); }
具体的JS设CSS实现代码请参考源文件。