自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用JavaScript制作連續(xù)滾動(dòng)字幕

開(kāi)發(fā) 前端
我們一般都用Marquee標(biāo)簽控制元素的滾動(dòng)。但是單向的Marquee滾動(dòng)是不連續(xù)的,每滾完一幕,就會(huì)出現(xiàn)一次空白。而下面介紹中的滾動(dòng)則是連續(xù)的,毫不間斷。

我們一般都用Marquee標(biāo)簽控制元素的滾動(dòng)。但是單向的Marquee滾動(dòng)是不連續(xù)的,每滾完一幕,就會(huì)出現(xiàn)一次空白。而下面介紹中的滾動(dòng)則是連續(xù)的,毫不間斷。

51CTO推薦專(zhuān)題:JavaScript網(wǎng)頁(yè)開(kāi)發(fā)指南

下面小陽(yáng)為你介紹這是如何實(shí)現(xiàn)的。

為了滾動(dòng)能夠“連續(xù)”,我們需要將字幕的內(nèi)容復(fù)制多遍,直到內(nèi)容的高度不小于滾動(dòng)區(qū)高度的兩倍。然后我們將溢出的滾動(dòng)條隱藏掉,用代碼控制滾動(dòng)條向下移動(dòng)(這時(shí)內(nèi)容將向上移動(dòng))。當(dāng)滾動(dòng)條滾動(dòng)到最下方時(shí),理論上不能再往下滾動(dòng)了,于是我們立刻調(diào)整滾動(dòng)條,將它向上滾動(dòng)到一個(gè)和當(dāng)前畫(huà)面一樣的位置。結(jié)果我們看到的就是連續(xù)的滾動(dòng)了。呵呵,說(shuō)的就是這么簡(jiǎn)單,那做起來(lái)如何呢?我們看看是如何逐步實(shí)現(xiàn)的。

  1. <div id="marquees"> <!-- 這些是字幕的內(nèi)容,你可以任意定義 --> <a href="#">鏈接一</a>  
  2. <br> <a href="#">鏈接二</a>  
  3. <br> <a href="#">鏈接三</a>  
  4. <br> <a href="#">鏈接四</a>  
  5. <br> <!-- 字幕內(nèi)容結(jié)束 -->  
  6. </div>   
  7. <!-- 以下是java-script代碼 -->  
  8. <script language="java-script">  
  9. <!--  
  10. marqueesHeight=200; //內(nèi)容區(qū)高度  
  11. stopscroll=false//這個(gè)變量控制是否停止?jié)L動(dòng)  
  12. with(marquees){  
  13. noWrap=true//這句表內(nèi)容區(qū)不自動(dòng)換行  
  14. style.width=0; //于是我們可以將它的寬度設(shè)為0,因?yàn)樗鼤?huì)被撐大  
  15. style.height=marqueesHeight;  
  16. style.overflowY="hidden"//滾動(dòng)條不可見(jiàn)  
  17. onmouseover=new Function("stopscroll=true"); //鼠標(biāo)經(jīng)過(guò),停止?jié)L動(dòng)  
  18. onmouseout=new Function("stopscroll=false"); //鼠標(biāo)離開(kāi),開(kāi)始滾動(dòng)  
  19. }  
  20. //這時(shí)候,內(nèi)容區(qū)的高度是無(wú)法讀取了。下面輸出一個(gè)不可見(jiàn)的層"templayer",稍后將內(nèi)容復(fù)制到里面:  
  21. document.write('<div id="templayer" 
  22. style="position:absolute;z-index:1;visibility:hidden"></div>');  
  23. function init(){ //初始化滾動(dòng)內(nèi)容  
  24. //多次復(fù)制原內(nèi)容到"templayer",直到"templayer"的高度大于內(nèi)容區(qū)高度:  
  25. while(templayer.offsetHeight<marqueesHeight){  
  26. templayer.innerHTML+=marquees.innerHTML;  
  27. //把"templayer"的內(nèi)容的“兩倍”復(fù)制回原內(nèi)容區(qū):  
  28. marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;  
  29. //設(shè)置連續(xù)超時(shí),調(diào)用"scrollUp()"函數(shù)驅(qū)動(dòng)滾動(dòng)條:  
  30. setInterval("scrollUp()",10);  
  31. }  
  32. document.body.onload=init;  
  33. preTop=0; //這個(gè)變量用于判斷滾動(dòng)條是否已經(jīng)到了盡頭  
  34. function scrollUp(){ //滾動(dòng)條的驅(qū)動(dòng)函數(shù)  
  35. if(stopscroll==truereturn//如果變量"stopscroll"為真,則停止?jié)L動(dòng)   
  36. preTop=marquees.scrollTop; //記錄滾動(dòng)前的滾動(dòng)條位置  
  37. marquees.scrollTop+=1; //滾動(dòng)條向下移動(dòng)一個(gè)像素  
  38. //如果滾動(dòng)條不動(dòng)了,則向上滾動(dòng)到和當(dāng)前畫(huà)面一樣的位置  
  39. //當(dāng)然不僅如此,同樣還要向下滾動(dòng)一個(gè)像素(+1):  
  40. if(preTop==marquees.scrollTop){  
  41. marquees.scrollTop=templayer.offsetHeight-marqueesHeight+1;  
  42. }  
  43. }  
  44. -->  
  45. </script> 

這樣就完成了,感覺(jué)做起來(lái)也不難吧。

原文鏈接:http://tech.sina.com.cn/c/2003-04-18/18689.html

【編輯推薦】

  1. 用JavaScript編寫(xiě)程序?qū)崿F(xiàn)文本滾動(dòng)
  2. 最流行的JavaScript框架間對(duì)比信息表
  3. 一道面試題引發(fā)的面壁:認(rèn)識(shí)JavaScript的settimeout和異步
  4. JavaScript實(shí)現(xiàn)搜索框智能提示上下移動(dòng)效果
  5. JavaScript重構(gòu)深入剖析
責(zé)任編輯:陳貽新 來(lái)源: 太平洋電腦網(wǎng)
相關(guān)推薦

2020-09-07 13:02:22

地球Python代碼

2011-06-27 13:57:42

JavaScript

2014-04-29 10:39:27

CSS3JavaScript

2020-12-14 08:05:28

Javascript隨機(jī)canvas

2011-07-22 13:30:52

JavaScript

2009-06-10 21:48:03

滾動(dòng)圖片Javascript特

2021-02-20 08:55:58

PythonGitHub互聯(lián)網(wǎng)

2017-08-29 10:55:15

AEbodymovinhtml

2021-04-29 14:32:24

鴻蒙HarmonyOS應(yīng)用

2010-09-30 15:24:31

滾動(dòng)條Javascript

2021-03-27 11:02:04

JavaScript隊(duì)列編程語(yǔ)言

2023-06-28 06:59:41

2021-01-28 18:06:49

JavaScriptCookieWeb

2010-04-20 13:45:00

WPS表格

2023-06-26 17:45:14

編程語(yǔ)言ChatGPTJavaScript

2012-06-12 13:11:06

JavaScript

2012-05-14 14:56:30

HTML5

2011-01-13 12:33:59

javascriptweb

2010-09-09 11:55:36

SQL函數(shù)標(biāo)簽

2021-06-15 10:30:57

PythonNFT區(qū)塊鏈
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)