利用jQuery实现一种Slider动画

关于轮播动画一种比较简单的实现机制就是

  图片首先float:left排列 祖父容器定宽 父容器无限宽 然后父容器left的值一直变化就可以实现动画效果了

举例如下

<div class="changeBox_imgs">
            <ul class="changeBox_imgs_list">
                <li><a href="#" target="_blank"><img alt="白强" src="images/banner1.jpg" />
                </a>
                </li>
                <li><a href="#" target="_blank"><img alt="白强" src="images/banner2.jpg" />
                </a>
                </li>
                <li><a href="#" target="_blank"><img alt="白强" src="images/banner3.jpg" />
                </a>
                </li>
            </ul>
        </div>

可以使changBox_imgs的定宽

.changeBox_imgs {
    position: relative;
    height: 354px;
    width: 732px;
    overflow: hidden;
}

宽即为图片宽度

然后使父元素无限宽

 

.changeBox_imgs_list {
    position: absolute;
    width: 9999px;
}

 

要滚动的元素

.changeBox_imgs_list li {
    float: left;
    width: 732px;
}

 

然后对于动画 只需要让父元素的left值变大就好了

如何调用

$(function() {
        //需要动画的延时时间 动画播放时间 图片数量 动画效果 
        $(".changeBox_imgs_list").BannerImages({
            speed:2000,
            length:3,
            easing:'easeInOutQuint',
            duration:500
        });//Banner滑动效果
    });

 

具体的函数代码如下 特别好懂

  

(function($){
    /*动画的参数有linear,swing,jswing,easeInQuad,easeOutQuad,
    easeInOutQuad,easeInCubic, easeOutCubic,easeInOutCubic,
    easeInQuart,easeOutQuart,easeInOutQuart, easeInQuint,
    easeOutQuint,easeInOutQuint,easeInSine,easeOutSine,
     easeInOutSine,easeInExpo,easeOutExpo,easeInOutExpo,
     easeInCirc, easeOutCirc,easeInOutCirc,easeInElastic,
     easeOutElastic,easeInOutElastic, easeInBack,easeOutBack,
     easeInOutBack,easeInBounce,easeOutBounce,easeInOutBounce*/
    $.fn.BannerImages=function(options) {
    var settings = {length:3,speed:3000,easing:'jswing',duration:500}; 
    $.extend(settings, options);
    //self代表调用这个函数的元素 f表示第一个子元素
    var self = this, f = 1;
    //得到它的宽度转成int
    var width=parseInt($(this.children()[0]).css('width'));
    var main = function() {
        //width*f-width 其实就是
        var j = (width * f - width);
        //是第一个吗是的话返回0否则返回负值
        j=(j == 0 ? 0 : -j);
        //执行动画 改变距左边的距离 就可以实现动画效果
        self.animate({
            left : j + "px"
        }, {queue:false,
duration:settings.duration, easing: settings.easing});
    };
    //开始
    function start()  {
        //不停调用main 在一段时间后
        setTimeout(function() {
            f++;
            if (f > settings.length) {
                f = 1;
            }
            start();
            main();
        }, settings.speed)
    };
    //刚开始调用的其实是start函数
    start();
}
})(jQuery);

 


 

特别提示 需要

 

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.easing.1.3.js"></script>

以后用KISSY写一个类似的

posted @ 2014-07-20 22:39  强子~Developer  阅读(622)  评论(0编辑  收藏  举报