js 实现无缝滚动

以前代码是转载其他网站的,在这儿收藏下。

实现1:(兼容FF)

 

<div id="div_scroll" style=" padding-top:20px; overflow:hidden;height:60px;width:920px; margin:0 auto;">
     <table height="129" border=0 align=left cellpadding=0 cellspace=0>
       <tr><td id=div_scroll1 valign=buttom>
      <table width="918" height="60" border=0 cellpadding=0 cellspacing=0>
      
     <img  src="../images/mh_pattern.png"/>
      
      </table>
    </td><td id=div_scroll2 valign=top></td></tr></table></div>
   
     <SCRIPT>
  var speed1=25//速度数值越大速度越慢
  document.getElementById("div_scroll2").innerHTML=document.getElementById("div_scroll1").innerHTML
  function Marquee1(){
  if(document.getElementById("div_scroll2").offsetWidth-document.getElementById("div_scroll").scrollLeft<=0)
  document.getElementById("div_scroll").scrollLeft-=document.getElementById("div_scroll1").offsetWidth
  else{
  document.getElementById("div_scroll").scrollLeft++
  }
  }
  var MyMar1=setInterval(Marquee1,speed1)
  document.getElementById("div_scroll").οnmοuseοver=function () {clearInterval(MyMar1)}
  document.getElementById("div_scroll").οnmοuseοut=function () {MyMar1=setInterval(Marquee1,speed1)}
  </SCRIPT> 

 

 实现2:(兼容火狐)

 

 
< html > < head > < title ></ title > < script language ="javascript" type ="text/javascript" > function VScrollPanel() { this .width = null ; // 滚动范围宽度 this .height = null ; // 滚动范围高度 this .delay = 100 ; // 时间延迟 this .step = 1 ; // 单步滚动像素 } VScrollPanel.prototype = { // 滚动指定ID的内容 Bind: function (domID) { this .dom = document.getElementById(domID); if ( this .width) { this .dom.style.width = this .width + " px " ; } if ( this .height) { this .dom.style.height = this .height + " px " ; } this .dom.style.overflow = " hidden " ; this .Scrolling(); }, // 滚动方法 Scrolling: function () { // 如果内容太少,已经完全可以显示,不需滚动 if ( this .dom.scrollHeight <= this .dom.clientHeight) return ; // 滚动到最后一项,切换位置 if ( this .willSwap) { this .dom.appendChild( this .lastOne); this .willSwap = false ; } // 一个对象自身的引用 var _this = this ; if ( this .dom.scrollTop + this .step + this .dom.clientHeight >= this .dom.scrollHeight) { // 滚动到达底部 // 删除临时添加的首项 if ( this .tmp != null ) this .dom.removeChild( this .tmp); // 复制第一项,即将移至最后一项 this .lastOne = this .dom.firstChild; this .tmp = this .lastOne.cloneNode( true ); // 添加第一项 // this.lastOne.replaceNode(this.tmp); // 在此用replaceChild替代replaceNode即可兼容FF this .dom.replaceChild( this .tmp, this .lastOne); /* 至于为什么要复制第一项,并临时插入 是因为如果在滚动内容刚好足够滚动时,如果没有这个临时项, 直接移动第一项到最后一项的时候,会发生跳动现象。 也就是,比如:如果有4项,不会发生滚动,而如果有5项的时候,就发生这种现象 但6项以上的时候,正常 */ this .willSwap = true ; } this .dom.scrollTop += this .step; setTimeout( function () { /* 此处必须用 _this 代替 this 否则错误,原因在此不阐述 */ _this.Scrolling(); }, this .delay); }, Pause: function () { this .pauseStep = this .step; this .step = 0 ; }, Continue: function () { this .step = this .pauseStep; } }; /* 经过多次实验,水平滚动通过新建一个表格来设置布局 才能最有效的保证布局不会乱,不会发生换行 所以只好水平、垂直滚动的分开做了 */ // 水平滚动。以下代码思路同上,不再注释 function HScrollPanel() { this .width = null ; this .height = null ; this .delay = 100 ; this .step = 1 ; } HScrollPanel.prototype = { Bind: function (domID) { this .dom = document.getElementById(domID); this .rootDom = document.createElement( " table " ); this .rootDom.border = " 0 " ; this .rootDom.cellPadding = " 0 " ; this .rootDom.cellSpacing = " 0 " ; var tbody = document.createElement( " tbody " ); this .rootDom.appendChild(tbody); this .row = document.createElement( " tr " ); tbody.appendChild( this .row); var child = this .dom.firstChild; while (child != null ) { this .dom.removeChild(child); if (child.nodeType == 1 ) { var td = document.createElement( " td " ); td.vAlign = " top " ; td.appendChild(child); this .row.appendChild(td); } child = this .dom.firstChild; } this .dom.appendChild( this .rootDom); if ( this .width) { this .dom.style.width = this .width + " px " ; } if ( this .height) { this .dom.style.height = this .height + " px " ; } this .dom.style.overflow = " hidden " ; this .Scrolling(); }, Scrolling: function () { if ( this .dom.scrollWidth <= this .dom.clientWidth) return ; if ( this .willSwap) { this .row.appendChild( this .lastOne); this .willSwap = false ; } var _this = this ; if ( this .dom.scrollLeft + this .step + this .dom.clientWidth >= this .dom.scrollWidth) { if ( this .tmp != null ) { this .row.removeChild( this .tmp); } this .lastOne = this .row.firstChild; this .tmp = this .lastOne.cloneNode( true ); // this.lastOne.replaceNode(this.tmp); this .row.replaceChild( this .tmp, this .lastOne); this .willSwap = true ; } this .dom.scrollLeft += this .step; setTimeout( function () { _this.Scrolling(); }, this .delay); }, Pause: function () { this .pauseStep = this .step; this .step = 0 ; }, Continue: function () { this .step = this .pauseStep; } }; </ script > < style type ="text/css" > body,td { font-family : "宋体" ; font-size : 12px ; } .item { width : 150px ; background-color : #f0f0f0 ; text-align : center ; margin : 5px ; padding : 3px ; } </ style > </ head > < body > 垂直滚动示例 < input type ="text" value ="100" onchange ="SetDelay(this);" /> < div id ="divVScroll" onmouseover ="vsp.Pause();" onmouseout ="vsp.Continue()" > < div class ="item" > AAAAAA </ div > < div class ="item" > BBBBBB </ div > < div class ="item" > CCCCCC </ div > < div class ="item" > DDDDDD </ div > < div class ="item" > EEEEEE </ div > < div class ="item"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值