zoukankan      html  css  js  c++  java
  • jquery跑马灯效果(ajax调取数据)

    jq代码:

      1 /**
      2  * @classDescription 模拟Marquee,无间断滚动内容
      3  * @author Aken Li(www.kxbd.com)
      4  * @DOM
      5  *      <div id="marquee">
      6  *          <ul>
      7  *               <li></li>
      8  *               <li></li>
      9  *          </ul>
     10  *      </div>
     11  * @CSS
     12  *      #marquee {200px;height:50px;overflow:hidden;}
     13  * @Usage
     14  *      $('#marquee').kxbdMarquee(options);
     15  * @options
     16  *        isEqual:true,//所有滚动的元素长宽是否相等,true,false
     17  *      loop: 0,//循环滚动次数,0时无限
     18  *        direction: 'left',//滚动方向,'left','right','up','down'
     19  *        scrollAmount:1,//步长
     20  *        scrollDelay:20//时长
     21  */
     22 (function($){
     23 
     24     $.fn.kxbdMarquee = function(options){
     25         var opts = $.extend({},$.fn.kxbdMarquee.defaults, options);
     26         
     27         return this.each(function(){
     28             var $marquee = $(this);//滚动元素容器
     29             var _scrollObj = $marquee.get(0);//滚动元素容器DOM
     30             var scrollW = $marquee.width();//滚动元素容器的宽度
     31             var scrollH = $marquee.height();//滚动元素容器的高度
     32             var $element = $marquee.children(); //滚动元素
     33             var $kids = $element.children();//滚动子元素
     34             var scrollSize=0;//滚动元素尺寸
     35             var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型,1左右,0上下
     36             
     37             //防止滚动子元素比滚动元素宽而取不到实际滚动子元素宽度
     38             $element.css(_type?'width':'height',10000);
     39             //获取滚动元素的尺寸
     40             if (opts.isEqual) {
     41                 scrollSize = $kids[_type?'outerWidth':'outerHeight']() * $kids.length;
     42             }else{
     43                 $kids.each(function(){
     44                     scrollSize += $(this)[_type?'outerWidth':'outerHeight']();
     45                 });
     46             }
     47             //滚动元素总尺寸小于容器尺寸,不滚动
     48             if (scrollSize<(_type?scrollW:scrollH)) return; 
     49             //克隆滚动子元素将其插入到滚动元素后,并设定滚动元素宽度
     50             $element.append($kids.clone()).css(_type?'width':'height',scrollSize*2);
     51             
     52             var numMoved = 0;
     53             function scrollFunc(){
     54                 var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';
     55                 if (opts.loop > 0) {
     56                     numMoved+=opts.scrollAmount;
     57                     if(numMoved>scrollSize*opts.loop){
     58                         _scrollObj[_dir] = 0;
     59                         return clearInterval(moveId);
     60                     } 
     61                 }
     62 
     63                 if(opts.direction == 'left' || opts.direction == 'up'){
     64                     var newPos = _scrollObj[_dir] + opts.scrollAmount;
     65                     if(newPos>=scrollSize){
     66                         newPos -= scrollSize;
     67                     }
     68                     _scrollObj[_dir] = newPos;
     69                 }else{
     70                     var newPos = _scrollObj[_dir] - opts.scrollAmount;
     71                     if(newPos<=0){
     72                         newPos += scrollSize;
     73                     }
     74                     _scrollObj[_dir] = newPos;
     75                 }
     76             }
     77             //滚动开始
     78             var moveId = setInterval(scrollFunc, opts.scrollDelay);
     79             //鼠标划过停止滚动
     80             $marquee.hover(
     81                 function(){
     82                     clearInterval(moveId);
     83                 },
     84                 function(){
     85                     clearInterval(moveId);
     86                     moveId = setInterval(scrollFunc, opts.scrollDelay);
     87                 }
     88             );
     89             
     90         });
     91     };
     92     $.fn.kxbdMarquee.defaults = {
     93         isEqual:true,//所有滚动的元素长宽是否相等,true,false
     94         loop: 0,//循环滚动次数,0时无限
     95         direction: 'left',//滚动方向,'left','right','up','down'
     96         scrollAmount:1,//步长
     97         scrollDelay:20//时长
     98 
     99     };
    100     $.fn.kxbdMarquee.setDefaults = function(settings) {
    101         $.extend( $.fn.kxbdMarquee.defaults, settings );
    102     };
    103 })(jQuery);

    CSS部分:

     1 <style type="text/css">
     2         * {margin:0;padding:0;}
     3         body { font-size:12px;}
     4         a {color:#333;}
     5         ul {list-style:none;}
     6         #marquee1 {position:absolute;top:80px;left:50px;width:310px;height:45px;overflow:hidden;background:#333;border:2px solid #333;}
     7         #marquee1 ul li {float:left; padding:0 1px;}
     8         #marquee1 ul li img {display:block;}
     9         
    10         #marquee2 {position:absolute;top:80px;left:400px;width:300px;height:25px;overflow:hidden; background:#EFEFEF;}
    11         #marquee2 ul li {float:left; padding:0 10px; line-height:25px;}
    12         
    13         #marquee3 {position:absolute;top:150px;left:50px;width:60px;height:235px;overflow:hidden;background:#333;border:2px solid #333;}
    14         #marquee3 ul li {float:left; padding:1px 0;}
    15         #marquee3 ul li img {display:block;}
    16         <!--从下往上滚动的css-->
    17         #marquee4 {position:absolute;top:150px;left:400px;width:200px;height:200px; overflow:hidden;background:#EFEFEF;}
    18         #marquee4 ul li {float:left; width:180px; padding:10px; line-height:20px;}
    19     </style>
    

    前台调用js部分:

    1 <script type="text/javascript">
    2         $(function(){
    3             $('#marquee1').kxbdMarquee({direction:'right'});
    4             $('#marquee2').kxbdMarquee({isEqual:false});
    5             $('#marquee3').kxbdMarquee({direction:'down'});
    6             $('#marquee4').kxbdMarquee({direction:'up',isEqual:false});//一般这个是常用的,从下往上滚动
    7         });
    8 </script>

    前台html部分:

     1 <body>
     2     <div id="marquee1">
     3         <ul>
     4             <li><img  src="../images/01s.jpg" width="60" height="45" /></li>
     5             <li><img  src="../images/02s.jpg" width="60" height="45" /></li>
     6             <li><img  src="../images/03s.jpg" width="60" height="45" /></li>
     7             <li><img  src="../images/04s.jpg" width="60" height="45" /></li>
     8             <li><img  src="../images/05s.jpg" width="60" height="45" /></li>
     9             <li><img  src="../images/06s.jpg" width="60" height="45" /></li>
    10             <li><img  src="../images/07s.jpg" width="60" height="45" /></li>
    11             <li><img  src="../images/08s.jpg" width="60" height="45" /></li>
    12         </ul>
    13     </div>
    14     
    15     <div id="marquee2">
    16         <ul>
    17             <li><a href="#">新闻公告一</a></li>
    18             <li><a href="#">新闻公告二新闻公告二新闻公告二新闻公告二</a></li>
    19             <li><a href="#">新闻公告三新闻公告三</a></li>
    20             <li><a href="#">新闻公告四新闻公告四新闻公告四</a></li>
    21             <li><a href="#">新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五</a></li>
    22             <li><a href="#">新闻公告六新闻公告六新闻公告六</a></li>
    23         </ul>
    24     </div>
    25     
    26     <div id="marquee3">
    27         <ul>
    28             <li><img  src="../images/01s.jpg" width="60" height="45" /></li>
    29             <li><img  src="../images/02s.jpg" width="60" height="45" /></li>
    30             <li><img  src="../images/03s.jpg" width="60" height="45" /></li>
    31             <li><img  src="../images/04s.jpg" width="60" height="45" /></li>
    32             <li><img  src="../images/05s.jpg" width="60" height="45" /></li>
    33             <li><img  src="../images/06s.jpg" width="60" height="45" /></li>
    34             <li><img  src="../images/07s.jpg" width="60" height="45" /></li>
    35             <li><img  src="../images/08s.jpg" width="60" height="45" /></li>
    36         </ul>
    37     </div>
    38     <!--从下往上的html-->
    39     <div id="marquee4">
    40         <ul>
    41             <li><a href="#">新闻公告一新闻公告一</a></li>
    42             <li><a href="#">新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二新闻公告二</a></li>
    43             <li><a href="#">新闻公告三新闻公告三新闻公告三新闻公告三</a></li>
    44             <li><a href="#">新闻公告四新闻公告四新闻公告四新闻公告四新闻公告四新闻公告四</a></li>
    45             <li><a href="#">新闻公告五新闻公告五新闻公告五新闻公告五新闻公告五</a></li>
    46             <li><a href="#">新闻公告六新闻公告六新闻公告六新闻公告六新闻公告六新闻公告六</a></li>
    47         </ul>
    48     </div>
    49 </body>

    经过测试,确实很好用.但有一点值得说明的.

    如果是利用ajax调取后台数据后再利用marquee效果,需要将前台调取marquee的js写在ajax的回调函数callback里面才能实现效果.

    因为这是ajax是个异步提交,发出ajax请求后,页面会继续加载,不会等返回结果的.所以不写在回调函数里面,是没有数据显示出来.

    ==================

    补充一点,如果跑马灯里li跑一段时间就乱跳,记得给li高度..

  • 相关阅读:
    Django Admin 管理工具
    老男孩培训机构老师的博客
    pycharm版本选择并安装
    Linux命令-自动挂载文件/etc/fstab功能详解
    django urls路由匹配分发
    django templates模板
    Django models模型
    django views视图函数
    JDK与JRE、JVM三者间的关系及JDK的安装部署
    django 第一个项目测试
  • 原文地址:https://www.cnblogs.com/hiytom/p/3323778.html
Copyright © 2011-2022 走看看