iscroll无限轮播

iscroll无限轮播

无限轮播有两种实现方法,一种是遇到边界图片,滚动前先移动下一
张图片的DOM节点。然而这种方法,会更新DOM.实际效果如果图片滚动
动画过慢的话,有卡顿。

这里我介绍另一种方法,轮播图片的前面挺入第一张图片,最后一张后面插
入第一张图片。这样,假如轮播图片有3张,序号是1,2,3。那么增加两张
图片后的顺序是3,1,2,3,1。向右滚动到3,接着1,在动画停止后,1
跳转到1即可。同理,向左滚动3跳转到3.

这里介绍的轮播图,会更复杂一些。当前图片不是全屏的,居中显示,左右
显示部分的前后图片。如图。其实思想还是一样的。再插入两张图片即可。


Video_2017-02-21_142253.gif
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <title>iScroll轮播</title>
    <script src="zepto.js"></script>
    <script src="iscroll-probe.js"></script>
    <style>

        *{
            margin:0;
            padding:0;
        }
        #carousel {
            height: 68px;
            position: relative;
            width: 100%;
            overflow: hidden;
            outline: 0;
            -webkit-box-sizing: border-box;
            z-index: 1;
        }

        #carousel > div {
            position: absolute;
            width: 2065px;
        }

        #carousel a {
            float: left;
            display: block;
            width: 295px;
            padding:0 5px;
        }

        #carousel a img {
            width: 100%;
            display: block;
            border-radius: 6px;
            border: none;
        }
    </style>
</head>
<body>
<div id="carousel">
    <div>
        <div class="carousel-content" style="transform: translateX(40px);">
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-c0a6a589cdbd5250.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-033c0a2dfe98cc63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-af3e05118f546a94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-c0a6a589cdbd5250.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-033c0a2dfe98cc63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-af3e05118f546a94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
            <a href="#">![图片](http://upload-images.jianshu.io/upload_images/1965739-c0a6a589cdbd5250.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</a>
        </div>
    </div>
</div>

<script>
    var myScroll = new IScroll($("#carousel").get(0), {
        mouseWheel: true,
        scrollbars: false,
        scrollX: true,
        scrollY: false,
        eventPassthrough: true,
        preventDefault: false,
        bounce: false,
        //snap:true
        snap: $("#carousel a"),
        snapSpeed: 300,
        momentum: false
    });
    //首次显示第二张
    myScroll.goToPage(2, 0, 0);
    var len = 7;

    myScroll.on('scrollEnd',function (){
        //调整期间,不允许滚动
        myScroll.disable();
        var currentPage = myScroll.currentPage;
        //向左划到第一张时,跳到倒数第二张
        if(currentPage.pageX == 1){
            setTimeout(function(){
                myScroll.goToPage(len-3,0,0);
                myScroll.enable();
            },10);
            //向右划到倒数第一张时,跳到第二张
        }else if(currentPage.pageX >= len -2){
            setTimeout(function(){
                myScroll.goToPage(2,0,0);
                myScroll.enable();
            },10);
        }else{
            myScroll.enable();
        }
    });
    //定时轮播
    setInterval(function(){
        var pageX = myScroll.currentPage.pageX;
        try {
            myScroll.goToPage(++pageX, 0);
        } catch (e) {
            console.log('autoScroll error', e);
        }
    },1000);
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,249评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,821评论 4 61
  • 早餐喝豆浆是我保持多年的一个饮食习惯。然而余下的豆渣却成了令人头疼的“鸡肋”,食之无味,弃之可惜。看着每天倒掉的豆...
    乔现锋阅读 3,621评论 0 3
  • 昨夜一杯摩卡,四点半便了无睡意。偶遇简书,相见恨晚。拜读笔者文字,燃起点点思绪。但愿这个新的开始能伴一个温暖...
    今夜有戏阅读 2,481评论 0 0
  • 今日小雨,风和日丽,去逛街
    淡水小鱼儿阅读 2,939评论 2 2

友情链接更多精彩内容