🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Parallax Parallax 滚动视差动画组件,提供基础滑动、事件回调及内置动画支持。GitHub 地址:https://github.com/hahnzhu/parallax.js 一、使用 1、HTML ~~~ <!-- 这里的每个标签和每个类都是必须的 --> <div class="wrapper"> <div class="pages"> <!-- 第一屏 --> <div class="page"> <!-- anything you want.... --> </div> <!-- 第二屏 --> <div class="page"> </div> <!-- 第三屏 --> <div class="page"> </div> ... </div> </div> ~~~ CSS 引用: ~~~ <link rel="stylesheet" href="{your path}/parallax.css"> /* 如果需要使用内置动画,需要引用下面的内容 */ <link rel="stylesheet" href="{your path}/parallax-animation.css"> ~~~ JS 引用: ~~~ <script src="{your path}/zepto.min.js"></script> <script src="{your path}/parallax.js"></script> <script> $('.pages').parallax(); </script> ~~~ 二、定制 ~~~ <script> // 下面的都是默认属性 $('.pages').parallax({ direction: 'vertical', // horizontal (水平翻页) swipeAnim: 'default', // cover (切换效果) drag: true, // 是否允许拖拽 (若 false 则只有在 touchend 之后才会翻页) loading: false, // 有无加载页 indicator: false, // 有无指示点 arrow: false, // 有无指示箭头 /* * 翻页后立即执行 * {int} index: 第几页 * {DOMElement} element: 当前页节点 * {String} directation: forward(前翻)、backward(后翻)、stay(保持原页) */ onchange: function(index, element, direction) { // code here... }, /* * 横竖屏检测 * {String} orientation: landscape / protrait */ orientationchange: function(orientation) { // code here... } }); </script> ~~~ 三、DOM 接口 ~~~ <div class="wrapper"> <!-- 初始化后自动添加 direction、swipeAnim、direction 类,其中 direction 在翻页的过程中才会添加。 --> <div class="pages vertical/horizontal default/cover forward/backward"> <!-- 为 page 添加 data-id,当前 page 会自动添加 current 类(翻页后立即添加) --> <section data-id="1" class="current"> ... </section> <section data-id="2"> ... </section> </div> </div> ~~~ 四、内置动画 有四种内置动画,分别是 slideToTop/Bottom/Left/Right、 fadeInToTop/Bottom/Left/Right、 followSlide 和 fadeIn/Out,动画参数可通过 data-animation、 data-duration、 data-delay 和 data-timing-function 进行配置。 **EXAMPLE** ![](https://box.kancloud.cn/1a2b7461b1388b78a668cbd4b65013ee_319x567.gif) 注:followSlide 效果会根据翻页方向的不同而改变,如下: ![](https://box.kancloud.cn/e204c508a9bb88326e5b0613bc47d71c_319x567.gif) ![](https://box.kancloud.cn/4f2d4506ad26ad0253057e0b54db0e18_319x567.gif) Demo 演示 请模拟 touch 事件体验: ~~~ <!-- CSS --> <style> section[data-id="1"] { background-color: #3498db; } section[data-id="2"] { background-color: #40d47e; } section[data-id="3"] { background-color: #ff8c81; } section[data-id="4"] { background-color: #3498db; } .box1 { width: 100px; height: 200px; background-color: #ecf0f1; position: absolute; left: 160px; top: 126px; } .box2 { width: 200px; height: 100px; background-color: #8e44ad; position: absolute; left: 60px; top: 226px; } .box3 { width: 100px; height: 100px; background-color: #34495e; position: absolute; left: 160px; top: 226px; } .box4 { width: 50px; height: 50px; background-color: #e74c3c; position: absolute; left: 185px; top: 250px; } </style> <!-- HTML --> <div class="wrapper"> <div class="pages"> <!-- 第一屏 --> <section class="page"> <div class="box1" data-animation="slideToBottom" data-timing-function="ease-in"></div> <div class="box2" data-animation="slideToTop" data-delay="300" data-timing-function="ease-out"></div> <div class="box3" data-animation="slideToRight" data-delay="600" data-timing-function="linear"></div> <div class="box4" data-animation="slideToLeft" data-delay="900" data-timing-function="cubic-bezier(.12,.73,.62,1.38)"></div> </section> <!-- 第二屏 --> <section class="page"> <div class="box1" data-animation="followSlide" data-duration="1000"></div> <div class="box2" data-animation="followSlide" data-delay="200" data-duration="1000"></div> <div class="box3" data-animation="followSlide" data-delay="400" data-duration="1000"></div> <div class="box4" data-animation="followSlide" data-delay="600" data-duration="1000"></div> </section> <!-- 第三屏 --> <section class="page"> <div class="box1" data-animation="fadeInToBottom"></div> <div class="box2" data-animation="fadeInToTop" data-delay="200"></div> <div class="box3" data-animation="fadeInToLeft" data-delay="400"></div> <div class="box4" data-animation="fadeInToRight" data-delay="600"></div> </section> <!-- 第四屏 --> <section class="page"> <div class="box1" data-animation="fadeIn"></div> <div class="box2" data-animation="fadeOut" data-delay="800"></div> </section> </div> </div> <!-- JS --> <script> $('.pages').parallax(); </script> ~~~