javascript製作滾動字幕

來源:互聯網
上載者:User
我們一般都用Marquee標籤控制元素的滾動。但是單向的Marquee滾動是不連續的,每滾完一幕,就會出現一次空白。而下面介紹中的滾動則是連續的,毫不間斷。
                          下面小陽為你介紹這是如何?的。
                          為了滾動能夠“連續”,我們需要將字幕的內容複寫多遍,直到內容的高度不小於滾
                        動區高度的兩倍。然後我們將溢出的捲軸隱藏掉,用代碼控制捲軸向下移動(這時內容將向上移動)。當捲軸滾動到最下方時,理論上不能再往下滾動了,於是我們立刻調整捲軸,將它向上滾動到一個和當前畫面一樣的位置。結果我們看到的就是連續的滾動了。呵呵,說的就是這麼簡單,那做起來如何呢?我們看看是如何逐步實現的。
                        <div id="marquees"> <!-- 這些是字幕的內容,你可以任意定義 --> <a
                        href="#">連結一</a>
                        <br> <a href="#">連結二</a>
                        <br> <a href="#">連結三</a>
                        <br> <a href="#">連結四</a>
                        <br> <!-- 字幕內容結束 -->
                        </div>
                        <!-- 以下是java-script代碼 -->
                        <script language="java-script">
                        <!--
                        marqueesHeight=200; //內容區高度
                        stopscroll=false; //這個變數控制是否停止滾動
                        with(marquees){
                        noWrap=true; //這句表內容區不自動換行
                        style.width=0; //於是我們可以將它的寬度設為0,因為它會被撐大
                        style.height=marqueesHeight;
                        style.overflowY="hidden"; //捲軸不可見
                        onmouseover=new Function("stopscroll=true"); //滑鼠經過,停止滾動
                        onmouseout=new Function("stopscroll=false"); //滑鼠離開,開始滾動
                        }
                        //這時候,內容區的高度是無法讀取了。下面輸出一個不可見的層"templayer",稍後將內容複寫到裡面:
                        document.write('<div id="templayer"
                        style="position:absolute;z-index:1;visibility:hidden"></div>');
                        function init(){ //初始化滾動內容
                        //多次複製原內容到"templayer",直到"templayer"的高度大於內容區高度:
                        while(templayer.offsetHeight<marqueesHeight){
                        templayer.innerHTML+=marquees.innerHTML;
                        } //把"templayer"的內容的“兩倍”複製回原內容區:
                        marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
                        //設定連續逾時,調用"scrollUp()"函數驅動捲軸:
                        setInterval("scrollUp()",10);
                        }
                        document.body.onload=init;
                        preTop=0; //這個變數用於判斷捲軸是否已經到了盡頭
                        function scrollUp(){ //捲軸的驅動函數
                        if(stopscroll==true) return; //如果變數"stopscroll"為真,則停止滾動
                        preTop=marquees.scrollTop; //記錄滾動前的捲軸位置
                        marquees.scrollTop+=1; //捲軸向下移動一個像素
                        //如果捲軸不動了,則向上滾動到和當前畫面一樣的位置
                        //當然不僅如此,同樣還要向下滾動一個像素(+1):
                        if(preTop==marquees.scrollTop){
                        marquees.scrollTop=templayer.offsetHeight-marqueesHeight+1;
                        }
                        }
                        -->
                        </script>
                          
                        這樣就完成了,感覺做起來也不難吧。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.