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 相关文章推荐
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
Aug 16 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
微信开发 微信授权详解
Oct 21 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 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
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
使用python制作一个解压缩软件
2019/11/13 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
中国央视网签名寄语
2014/01/18 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
信息工作经验交流材料
2014/05/28 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技