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 相关文章推荐
定义select的边框颜色
Apr 28 Javascript
JQuery中的$.getJSON 使用说明
Mar 10 Javascript
最短的IE判断代码
Mar 13 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
Aug 03 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
微信小程序实现手势滑动效果
Aug 26 Javascript
Centos7 安装Node.js10以上版本的方法步骤
Oct 15 Javascript
Node.js 中判断一个文件是否存在
Aug 24 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
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
jQuery实现增删改查
2020/12/22 jQuery
linux下安装easy_install的方法
2013/02/10 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
django自带调试服务器的使用详解
2019/08/29 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
python爬虫请求头的使用
2020/12/01 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
大四自我鉴定
2014/02/08 职场文书
采购助理岗位职责
2014/02/16 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android