javascript - 网上搜的jquery轮播图代码的疑问?
PHP中文网
PHP中文网 2017-04-10 16:14:01
[JavaScript讨论组]

demo在这http://jsfiddle.net/ypv2g2b8/

$(function(){
   //滚动广告
    var len = $(".num > li").length;
    var index = 0;  
    var adTimer;
    $(".num li").mouseover(function() {
        index = $(".num li").index(this); 
        showImg(index);
    }).eq(0).mouseover();
    //滑入停止动画,滑出开始动画.
    $('#scrollPics').hover(function() {
        clearInterval(adTimer);
    }, function() {
        adTimer = setInterval(function() {
            showImg(index)
            index++;
            if (index == len) {       //最后一张图片之后,转到第一张
                index = 0;
            }
        }, 3000);
    }).trigger("mouseleave");
    function showImg(index) {
        var adHeight = $("#scrollPics>ul>li:first").height();
        $(".slider").stop(true, false).animate({
            "marginTop": -adHeight * index + "px"    //改变 marginTop 属性的值达到轮播的效果
        }, 1000);
        $(".num li").removeClass("on")
            .eq(index).addClass("on");
    }
});

1,第一个疑问是这个轮播图是怎么运行起来的?他的定时器是写在hover方法中的。没有hover元素怎么会在加载时就运行呢?
2, $(".num li").mouseover事件后面加.eq(0).mouseover();是什么意思呢?
3,showImg方法中为什么要先stop一下在运行animate?
"marginTop": -adHeight * index 为什么要是负的adHeight乘以index呢?

请大家指点迷津。

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
PHPz

1.trigger("mouseleave") 触发了 timer
2.触发0th li的mouseover的时间帮顶
3.控制显示哪张图片的, stop不知道,很少写js动画

天蓬老师

用css3的animation,几行css就够了...

天蓬老师

补充楼上,stop是为了停掉上一次没完执行的动画,比如你很快的连续按很多次下一页,就会出现动画错乱的bug,这里的stop就是为了处理这个bug

阿神

用负值是因为他用marginTop的形式,图片是从上往下排列,负的就是往上滑动的意思;用那个hover来触发是为了,鼠标不放在图片上,图片每个3秒自动切换,鼠标放在了图片上,则停止切换图片

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

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