jQuery滚动新闻实现代码


Posted in Javascript onJune 26, 2016

     网上下载了一个Jquery新闻滚动Demo,效果不错。我根据自己情况,做了些调整。
    下载后,除了Html及Jquery.js,还有三个文件,分别是Css,主Js和一个定位Js(jquery.dimensions.js),Css文件完全可以通过动态赋值实现,省的在Css文件中添加了,况且可以重定义,应该效果更好。
    定位Js只用到一个方法,我把它整合到之中了,少加载一个是一个么。
    原Demo是一行显示的滚动效果,有一个Bug,即不等的多行显示时会跑错,已修复。
    原Demo有一个mouseover属性,我一般不用(效果不好,看一下实现方法也有漏洞,在多行时效果更差),删除了。

    借鉴别人的思路与代码,不敢独享。

删除的部分:

$('> ul', this)
    .bind('mouseover', function(e) {
     if ($(e.target).is('li')) {
      $(e.target).addClass('hover');
     }
    })
    .bind('mouseout', function(e) {
     if ($(e.target).is('li')) {
      $(e.target).removeClass('hover');
     }
    });

调整后代码:

html部分:

<div id="tbNews">
<ul>
 <li>1、滚动新闻,滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
 <li>2、滚动新闻,滚动新闻</li>
 <li>3、滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
 <li>4、滚动新闻,滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
 <li>5、滚动新闻</li>
</ul>
</div>
<script language="JavaScript" src="jdNewsScroll.js" type="text/javascript">
</script>
<script defer="defer" language="JavaScript" type="text/javascript">
$(function() {
 $('#tbNews').jdNewsScroll({divWidth:130,divHeight:50,fontSize:'10.5pt'});
});
</script>

Js代码:

(function($){
  var ELMS = [];
  $.fn.jdNewsScroll = function(settings) {
  settings = $.extend({}, arguments.callee.defaults, settings);
 $(this).css({"position":"relative","overflow":"hidden","width":settings.divWidth,"height":settings.divHeight});
 $(this).find("ul").css({"position":"relative","list-style-type":"none","font-size":settings.fontSize,"margin":"0px"});
 $(this).find("li").css({"line-height":"130%","margin":"0px","padding":"2px 10px 1px 10px"});
  $(this).each(function(){
   this.$settings = settings;
   this.$pause = false;
   this.$counter = settings.beginTime;
   $(this).hover(function(){ $(this).jdNewsScrollPause(true) }, function(){ $(this).jdNewsScrollPause(false) });
   ELMS.push(this);
  });
  return this;
 };
 $.fn.jdNewsScroll.defaults = {
  beginTime: 10,
  fontSize: '9pt',
  divWidth: '100%',
  divHeight: '200px',
  lineHeight: '130%',
  delay:  20,
  step: 2
 };
 $.fn.jdNewsScrollPause = function(pause) {
  return this.each(function() {
   this.$pause = pause;
  });
 }
 function outerHeight(options) {
  if (!this[0]) 0;
  options = $.extend({ margin: false }, options || {});
  return this[0] == window || this[0] == document ?
   this.height() : this.is(':visible') ?
    this[0].offsetHeight + (options.margin ? (num(this, 'marginTop') + num(this, 'marginBottom')) : 0) :
    this.height() 
     + num(this,'borderTopWidth') + num(this, 'borderBottomWidth') 
     + num(this, 'paddingTop') + num(this, 'paddingBottom')
     + (options.margin ? (num(this, 'marginTop') + num(this, 'marginBottom')) : 0);
 }

 setInterval(scroll, 80);
 function scroll() {
  for (var i = 0; i < ELMS.length; i++) {
   var elm = ELMS[i];
   if (elm && !elm.$pause) {
    if (elm.$counter == 0) {
     var ul  = $('> ul', elm)[0];
     if (!elm.$steps) {
      elm.$steps = $('> li:first-child', ul).outerHeight();
      elm.$step = 0;
     }
     if ((elm.$steps + elm.$step) <= 0) {
      elm.$counter  = elm.$settings.delay;
      elm.$steps   = false;
      $(ul).css('top', '0').find('> li:last-child').after($('> li:first-child', ul));
      $('> *', ul).not('li').remove();
     } else {
      elm.$step -= elm.$settings.step;
      if (-elm.$step > elm.$steps) {
       elm.$step = -elm.$steps;
      }
      ul.style.top = elm.$step + 'px';
     }
    } else {
     elm.$counter--;
    }
   }
  }
 };
})(jQuery);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js操作checkbox遇到的问题解决
Jun 29 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
Jul 04 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
详解JavaScript中的every()方法
Jun 08 Javascript
强大Vue.js组件浅析
Sep 12 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
详解离线安装npm包的几种方法
Nov 25 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
js实现掷骰子小游戏
Oct 24 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
Vue3.0的优化总结
Oct 16 Javascript
js css实现垂直方向自适应的三角提示菜单
Jun 26 #Javascript
JS中的进制转换以及作用
Jun 26 #Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 #Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 #Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 #Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 #Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 #Javascript
You might like
给海燕B411配件机起死回生配上件
2021/03/02 无线电
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
input的focus方法使用
2010/03/13 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
Python实现图像的垂直投影示例
2020/01/17 Python
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
技校生自我鉴定
2013/12/08 职场文书
销售副总经理岗位职责
2013/12/11 职场文书
后进生转化工作制度
2014/01/17 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
员工合理化建议书
2014/05/19 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
五年级作文之成长
2019/09/16 职场文书
Python图片检索之以图搜图
2021/05/31 Python