javascript - 自己写的jQuery无缝滚动,为何无法无缝滚动?
PHP中文网
PHP中文网 2017-04-11 12:23:44
[JavaScript讨论组]

需求:左右切换自动无缝滚动如下图

代码:
HTML:

  • 新加坡香港综合肿瘤中心
  • 香港心汇心脏及脑血管病检查预防中心
  • 香港养和医院
  • 香港卓健医疗
  • 香港卓健医疗1
  • 香港卓健医疗2

css:

.flex-viewport {
    overflow: hidden;
    margin-top: 10px;
}
.slide {
    position: relative;
    height: 163px;
    overflow: hidden;
    width: 1138px;
}
.slide ul {
    margin-left: -12px;
    position: absolute;
    width: 3000px;
}
.slide li {
    float: left;
    position: relative;
    margin-left: 12px;
}
.slide li img {
    width: 275px;
    height: 160px;
    max-width: 100%;
}
.slide li span {
    position: absolute;
    display: block;
    background: #25aa77;
    bottom: 0;
    left: 0;
    width: 275px;
    height: 32px;
    font-size: 16px;
    line-height: 30px;
    text-align: center;
    color: #fff;
}
.direction-nav li a{
    display: block;
  cursor: pointer;
    position: absolute;
    width: 50px;
    height: 80px;
    top: 50%;
    text-indent: -9999px;
    background-position: -500px 0px;
}
.direction-nav li .prev {
    left: 0;
}
.direction-nav li .next {
    right: 4px;
    background-position: -452px 0px;
}

用的是jq3.0.0
JQ:

    var silde = $("#silde-show"),    
        sildeLi = $("#silde-show li"),
        next  = $(".direction-nav .next"),
        prev  = $(".direction-nav .prev"),
        len   = $("#silde-show>li").length,
        liWidth= parseInt($("#silde-show>li").width()) + parseInt($("#silde-show>li").css("marginLeft")),
        index = 0,
        clone = $("#silde-show li").clone();
    function move(){
        if(index == -1){
            sildeLi.prepend(clone);
            silde.animate({left: -(len - 4) * liWidth},500,function(){
                sildeLi.remove(clone);
            });
            index = len - 4;
        }
        if(index > len - 4){
            sildeLi.append(clone);
            silde.animate({left: 0},500,function(){
                sildeLi.remove(clone);
            });
            index = 0;
        }
        silde.stop().animate({left: -index * liWidth }, 500);
    }         

    prev.on("click",function(){
        index--;
        move();
    });        
    next.on("click",function(){
        index++;
        move();
    });

问题:自己写的jQuery无缝滚动,为何无法无缝滚动?
思路:当鼠标点击在第一个时候(index = 0 )时候,增加复制的clone,然后把left定位最后一个后移除clone。当鼠标点击最后一个(len-4)时候,增加复制clone,然后把left定位第一个后移除clone

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
PHP中文网

没有去试你的代码。
可以提供一个之前写循环轮播的思路:
几个轮播页排一排,都float: left
点左按钮,最左的那个轮播页动画至margin-left: -(slideItemWidth),就形成向左轮播的效果;
动画结束后,将第一个元素直接 append 到最后,恢复margin-left
点右按钮,以上逆向过程即可

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号