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代码
Nov 12 Javascript
js中call与apply的用法小结
Dec 28 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
Node.js 回调函数实例详解
Jul 06 Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
Aug 31 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
axios如何利用promise无痛刷新token的实现方法
Aug 27 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
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP制作用户注册系统
2015/10/23 PHP
jQuery中的val()示例应用
2014/02/26 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
原生js+canvas实现验证码
2020/11/29 Javascript
python实现NB-IoT模块远程控制
2018/06/20 Python
python文件拆分与重组实例
2018/12/10 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
甜品店创业计划书
2014/09/21 职场文书
社会实践活动报告
2015/02/05 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
同学会演讲稿
2019/04/02 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
5道关于python基础 while循环练习题
2021/11/27 Python