• jQuery无缝滚动


    引入js以及配置滚动

     <script type="text/javascript" src="jquery1.4.2.min.js"></script>
     <script type="text/javascript" src="kxbdMarquee.js"></script>
     <script type="text/javascript">
      $(function(){
       $('#marquee1').kxbdMarquee({direction:'left'});
      });
     </script>
    
     <div id="marquee1">
      <ul>
       <li><a href="#">新闻公告一</a></li>
       <li><a href="#">新闻公告二新闻公告二新闻公告二新闻公告二</a></li>
       <li><a href="#">新闻公告三新闻公告三</a></li>
       <li><a href="#">新闻公告四新闻公告四新闻公告四</a></li>
       <li><a href="#">新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五</a></li>
       <li><a href="#">新闻公告六新闻公告六新闻公告六</a></li>
      </ul>
     </div>
    

    kxbdMarquee.js的内容

    /**
    * @classDescription 模拟Marquee,无间断滚动内容
    * @author Aken Li(www.kxbd.com)
    * @DOM
    *      <div id="marquee">
    *          <ul>
    *               <li></li>
    *               <li></li>
    *          </ul>
    *      </div>
    * @CSS
    *      #marquee {200px;height:50px;overflow:hidden;}
    * @Usage
    *      $('#marquee').kxbdMarquee(options);
    * @options
    *    isEqual:true,//所有滚动的元素长宽是否相等,true,false
    *      loop: 0,//循环滚动次数,0时无限
    *    direction: 'left',//滚动方向,'left','right','up','down'
    *    scrollAmount:1,//步长
    *    scrollDelay:20//时长
    */
    (function($){
    
        $.fn.kxbdMarquee = function(options){
            var opts = $.extend({},$.fn.kxbdMarquee.defaults, options);
            
            return this.each(function(){
                var $marquee = $(this);//滚动元素容器
                var _scrollObj = $marquee.get(0);//滚动元素容器DOM
                var scrollW = $marquee.width();//滚动元素容器的宽度
                var scrollH = $marquee.height();//滚动元素容器的高度
                var $element = $marquee.children(); //滚动元素
                var $kids = $element.children();//滚动子元素
                var scrollSize=0;//滚动元素尺寸
                var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型,1左右,0上下
                
                //防止滚动子元素比滚动元素宽而取不到实际滚动子元素宽度
                $element.css(_type?'width':'height',10000);
                //获取滚动元素的尺寸
                if (opts.isEqual) {
                    scrollSize = $kids[_type?'outerWidth':'outerHeight']() * $kids.length;
                }else{
                    $kids.each(function(){
                        scrollSize += $(this)[_type?'outerWidth':'outerHeight']();
                    });
                }
                //滚动元素总尺寸小于容器尺寸,不滚动
                if (scrollSize<(_type?scrollW:scrollH)) return; 
                //克隆滚动子元素将其插入到滚动元素后,并设定滚动元素宽度
                $element.append($kids.clone()).css(_type?'width':'height',scrollSize*2);
                
                var numMoved = 0;
                function scrollFunc(){
                    var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';
                    if (opts.loop > 0) {
                        numMoved+=opts.scrollAmount;
                        if(numMoved>scrollSize*opts.loop){
                            _scrollObj[_dir] = 0;
                            return clearInterval(moveId);
                        } 
                    }
                    if(opts.direction == 'left' || opts.direction == 'up'){
                        _scrollObj[_dir] +=opts.scrollAmount;
                        if(_scrollObj[_dir]>=scrollSize){
                            _scrollObj[_dir] = 0;
                        }
                    }else{
                        _scrollObj[_dir] -=opts.scrollAmount;
                        if(_scrollObj[_dir]<=0){
                            _scrollObj[_dir] = scrollSize;
                        }
                    }
                }
                //滚动开始
                var moveId = setInterval(scrollFunc, opts.scrollDelay);
                //鼠标划过停止滚动
                $marquee.hover(
                    function(){
                        clearInterval(moveId);
                    },
                    function(){
                        clearInterval(moveId);
                        moveId = setInterval(scrollFunc, opts.scrollDelay);
                    }
                );
                
            });
        };
        $.fn.kxbdMarquee.defaults = {
            isEqual:true,//所有滚动的元素长宽是否相等,true,false
            loop: 0,//循环滚动次数,0时无限
            direction: 'left',//滚动方向,'left','right','up','down'
            scrollAmount:1,//步长
            scrollDelay:20//时长
    
        };
        $.fn.kxbdMarquee.setDefaults = function(settings) {
            $.extend( $.fn.kxbdMarquee.defaults, settings );
        };
    })(jQuery);
    

     下载地址 https://files.cnblogs.com/ishibin/jQuery%E6%97%A0%E7%BC%9D%E6%BB%9A%E5%8A%A8.rar

  • 相关阅读:
    Vue 环境配置
    导入解决方案错误及其解决办法
    Dynamics 365创建用户提示:您正在尝试使用已由其他用户使用的域登录来创建用户。的解决办法
    iOS核心动画详解(CABasicAnimation)
    iOS核心动画详解(一)
    iOS 微信支付流程详解
    初探runtime
    iOS之block,一点小心得
    iOS scrollview循环播放加缩放
    用程序删除工程中多余的图片
  • 原文地址:https://www.cnblogs.com/ishibin/p/2255188.html
Copyright © 2020-2023  润新知