JS實(shí)現(xiàn)的N多簡(jiǎn)單無(wú)縫滾動(dòng)代碼(包含圖文效果)
本文實(shí)例講述了JS實(shí)現(xiàn)的N多簡(jiǎn)單無(wú)縫滾動(dòng)代碼。分享給大家供大家參考,具體如下:
實(shí)現(xiàn)原理很簡(jiǎn)單,注冊(cè)事件之后,立即將元素的innerHTML累加一次。
接著滾動(dòng)開(kāi)始,當(dāng)滾動(dòng)條到達(dá)元素的中間位置時(shí):
不要在子元素上設(shè)置margin和padding,因?yàn)镃SS對(duì)margin或padding的疊加機(jī)制,會(huì)導(dǎo)致滾動(dòng)出現(xiàn)“跳躍”。穩(wěn)妥的辦法是套一個(gè)內(nèi)聯(lián)元素,然后再在里面設(shè)置margin或者padding!
運(yùn)行效果截圖如下:
在線演示地址如下:
http://demo.jb51.net/js/2015/js-n-txt-pic-scroll-codes/
具體代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body{width:80%;margin:0 auto;color:#00a;} h2{font-size:120%;margin:1em auto;text-align:center;} div{border:solid 1px #0a0;font-size:12px;overflow:hidden;width:500px;margin:1em auto;} p{padding:0;margin:0;} p span{display:inline-block;margin:1em;} p b{margin:1em .5em;display:inline-block;font-size:120%;color:red;} .tips{border:solid 1px red;background:#FFC;padding:.5em;} </style> <title>無(wú)縫滾動(dòng)</title> </head> <body> <h1>較簡(jiǎn)單的無(wú)縫滾動(dòng)實(shí)現(xiàn)辦法</h1> <p class="tips">切記:不要在子元素上設(shè)置margin和padding,因?yàn)镃SS對(duì)margin或padding的疊加機(jī)制,會(huì)導(dǎo)致滾動(dòng)出現(xiàn)“跳躍”。穩(wěn)妥的辦法是套一個(gè)內(nèi)聯(lián)元素,然后再在里面設(shè)置margin或者padding!為什么滾動(dòng)到一半就跳轉(zhuǎn)到頂部了呢?因?yàn)閛bj.innerHTML=obj.innerHTML+obj.innerHTML,它迷惑了你。。。。</p> <h2>第一個(gè),設(shè)置非標(biāo)準(zhǔn)屬性delay,所以要快些</h2> <div class="seamless" style="height:100px;" id="obj" delay="10"> <p><span>藍(lán)色理想維基是一個(gè)以藍(lán)色理想社區(qū) 用戶為基礎(chǔ)的維基系統(tǒng)。 只要是社區(qū)的用戶,并達(dá)到初級(jí)用戶級(jí)別,就能對(duì)本站的頁(yè)面進(jìn)行增加和編輯。</span></p> <p><span>我們目前使用這套系統(tǒng)來(lái)完成我們網(wǎng)站的各項(xiàng)幫助。比如論壇怎么使用,怎么找回密碼一類(lèi)的問(wèn)題。另外還用來(lái)記錄一些網(wǎng)站,會(huì)員的各項(xiàng)歷史信息。</span></p> <p><span>長(zhǎng)期的打算是解決社區(qū)的技術(shù)版塊中重復(fù)提出的基礎(chǔ)問(wèn)題。因?yàn)檎搲貜?fù)很不規(guī)范,需要用戶自己從回復(fù)中整理和測(cè)試,另外很容易被帖子內(nèi)容淹沒(méi),沒(méi)有有效地進(jìn)行整理和規(guī)范。</span></p> <p><span>我們想利用高素質(zhì)的網(wǎng)站會(huì)員在HTML方面的專(zhuān)業(yè)知識(shí),來(lái)完成一個(gè)協(xié)作的WEB知識(shí)庫(kù),造福大眾。</span></p> <p><span>藍(lán)色理想維基標(biāo)識(shí)設(shè)計(jì)師是:bobpop,標(biāo)識(shí)版權(quán)屬于支付寶。</span></p> </div> <h2>第二個(gè),如果未設(shè)置delay,則默認(rèn)100毫秒的頻率滾動(dòng)</h2> <div class="seamless" style="height:50px;"> <p><span>缺陷:不能對(duì)子標(biāo)簽設(shè)置margin或者padding。</span></p> <p><span>怎么辦呢?跟上面一樣,里面套一個(gè)span標(biāo)簽,然后就可以設(shè)置margin,padding了。</span></p> <p><span>算是一個(gè)缺點(diǎn)吧。</span></p> </div> <h2>第三個(gè),可以停止的,因?yàn)閏lass="seamless <strong style="color:red;">allowStop</strong>"</h2> <div class="seamless allowStop" style="height:90px;width:150px;" delay="9"> <p><span><img src="images/frown.gif" width="50" /></span></p> <p><span><img src="images/redface.gif" /></span></p> <p><span><img src="images/biggrin.gif" width="90" /></span></p> <p><span><img src="images/wink.gif" width="120" /></span></p> <p><span><img src="images/tongue.gif" width="40" /></span></p> <p><span><img src="images/cool.gif" align="right" height="40" /></span></p> <p><span><img src="images/rolleyes.gif" width="70" /></span></p> <p><span><img src="images/confused.gif" /></span></p> <p><span><img src="images/han.gif" /></span></p> </div> </body> </html> <script type="text/javascript"> (function(c){ var obj=document.getElementsByTagName("div"); var _l=obj.length; var o; for(var i=0;i<_l;i++){ o=obj[i]; var n2=o.clientHeight; var n3=o.scrollHeight; o.s=0; if(o.className.indexOf(c)>=0){ if(n3<=n2){return false;} var delay=parseInt(o.getAttribute("delay"),10); if(isNaN(delay)){delay=100;} if(o.className.indexOf("allowStop")>=0){ o.onmouseover=function(){this.Stop=true;} o.onmouseout=function(){this.Stop=false;} } giveInterval(autoRun,delay,o); //關(guān)鍵之處?。? o.innerHTML=o.innerHTML+o.innerHTML; } } //注冊(cè)函數(shù) function giveInterval(funcName,time){var args=[];for(var i=2;i<arguments.length;i++){args.push(arguments[i]);}return window.setInterval(function(){funcName.apply(this,args);},time);} function autoRun(o,s){ if(o.Stop==true){return false;} var n1=o.scrollTop; var n3=o.scrollHeight; o.s++; o.scrollTop=o.s; if(n1>=n3/2){ o.scrollTop=0; o.s=0; } } })('seamless') </script>
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
Bootstrap模態(tài)框(modal)垂直居中的實(shí)例代碼
這篇文章主要介紹了Bootstrap模態(tài)框(modal)垂直居中的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08javascript基于定時(shí)器實(shí)現(xiàn)進(jìn)度條功能實(shí)例
這篇文章主要介紹了javascript基于定時(shí)器實(shí)現(xiàn)進(jìn)度條功能,簡(jiǎn)單分析了javascript定時(shí)器的功能、使用方法并給出了基于定時(shí)器實(shí)現(xiàn)的進(jìn)度條功能實(shí)例,需要的朋友可以參考下2017-10-10微信小程序 wx.getUserInfo引導(dǎo)用戶授權(quán)問(wèn)題實(shí)例分析
這篇文章主要介紹了微信小程序 wx.getUserInfo引導(dǎo)用戶授權(quán)問(wèn)題,結(jié)合實(shí)例形式分析了微信小程序使用wx.getUserInfo引導(dǎo)用戶授權(quán)問(wèn)題的具體操作步驟與實(shí)現(xiàn)方法,需要的朋友可以參考下2020-03-03JS手機(jī)端touch事件計(jì)算滑動(dòng)距離的方法示例
這篇文章主要介紹了JS手機(jī)端touch事件計(jì)算滑動(dòng)距離的方法,結(jié)合實(shí)例形式分析了javascript響應(yīng)手機(jī)端屏幕上touch事件計(jì)算滑動(dòng)距離的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10使用javascript實(shí)現(xiàn)監(jiān)控視頻播放并打印日志
這篇文章主要介紹了使用javascript實(shí)現(xiàn)監(jiān)控視頻播放并打印日志的方法及示例代碼分享,非常不錯(cuò),需要的朋友可以參考下2015-01-01Javascript/Jquery——簡(jiǎn)單定時(shí)器的多種實(shí)現(xiàn)方法
本文為大家詳細(xì)介紹下使用Javascript/Jquery實(shí)現(xiàn)簡(jiǎn)單的定時(shí)器,方法有多種,大家可以根據(jù)自己的喜好自由選擇,希望對(duì)大家有所幫助2013-07-07