• 利用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写一个类似的

  • 相关阅读:
    第三周学习进度表
    思维导图
    第二周学习进度表
    调查问卷
    微感想
    C/C++数组取值的真实实现——一个初学者的常见疑惑
    保存所有标签页,以便下次打开继续工作
    内存越界调到心态爆炸
    C语言VC6的一个asprintf实现,或:VC6上C语言使用asprintf, snprintf的坑
    Learning and Inference for Hierarchically Split PC中文字幕
  • 原文地址:https://www.cnblogs.com/bq12345/p/3857431.html
Copyright © 2020-2023  润新知