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 相关文章推荐
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
Aug 02 Javascript
JavaScript实现给按钮加上双重动作的方法
Aug 14 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
Aug 27 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
Jan 23 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
May 22 Javascript
微信小程序的授权实现过程解析
Aug 02 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
vue单元格多列合并的实现
Nov 26 Vue.js
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
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
python中的格式化输出用法总结
2016/07/28 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python队列Queue的详解
2019/05/10 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
pandas的相关系数与协方差实例
2019/12/27 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Python request使用方法及问题总结
2020/04/26 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
竞选班长演讲稿
2013/12/30 职场文书
二手书店创业计划书
2014/01/16 职场文书
房屋出租协议书
2014/04/10 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
校本课程教学计划
2015/01/19 职场文书
学校计划生育责任书
2015/05/09 职场文书
董事长开业致辞
2015/07/29 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
python基础入门之字典和集合
2021/06/13 Python