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获取整个页面文档的实现代码
Dec 15 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
Vue $emit $refs子父组件间方法的调用实例
Sep 12 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 Javascript
Vue + ts实现轮播插件的示例
Nov 10 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
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
yii添删改查实例
2015/11/16 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
Python合并字符串的3种方法
2015/05/21 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
python中@contextmanager实例用法
2021/02/07 Python
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
SQL Server面试题
2013/04/04 面试题
医学院四年学习生活的自我评价
2013/11/06 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
学前教育见习总结
2015/06/23 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书