亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CSS和JavaScript的網(wǎng)頁滾動字幕

        2012-07-09 01:44:34張紅琴陳煥英
        長春工業(yè)大學學報 2012年2期
        關鍵詞:字幕網(wǎng)頁代碼

        張紅琴, 陳煥英

        (河南質(zhì)量工程職業(yè)學院現(xiàn)代教育技術研究中心,河南平頂山 467000)

        0 引 言

        隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡成為信息傳播的主要渠道。文字是網(wǎng)頁必不可少的元素,而滾動字幕一直都廣泛應用在網(wǎng)頁上,可以使網(wǎng)頁中的文字變得更生動活潑,在瀏覽時它特別醒目,經(jīng)常用它來發(fā)布一些站點的通知或提示信息。滾動字幕的使用使得整個網(wǎng)頁更有動感,顯得很有生氣,而且還會使網(wǎng)頁節(jié)省出許多空間。現(xiàn)在的網(wǎng)站中也越來越多地使用滾動字幕來加強網(wǎng)頁的互動性。許多網(wǎng)站用這種形式來顯示動態(tài)新聞內(nèi)容,更加吸引瀏覽者。

        CSS(Cascading Style Sheets,層疊樣式表單)是用于控制網(wǎng)頁樣式并允許將樣式信息與網(wǎng)頁內(nèi)容分離的一種標記性語言[1-2],是由W3C提出的網(wǎng)頁制作標準,現(xiàn)已獲得絕大多數(shù)瀏覽器的支持,成為網(wǎng)頁設計必不可少的工具之一。JavaScript是一種腳本編程語言,其功能十分強大,可用于檢測網(wǎng)頁中的各種事件,并作出相應的反應,可以很輕松地動態(tài)改變網(wǎng)頁的CSS樣式以及結構,甚至頁面顯示內(nèi)容。這使頁面靈活性大大增加,可以使用戶動態(tài)決定頁面的外觀和內(nèi)容[3]。通常意義上認為CSS是靜態(tài)的樣式設定,而JavaScript則是動態(tài)地實現(xiàn)各種功能。通過JavaScript與CSS的配合,可以制作很多奇妙而實用的效果[4]。

        用HTML自帶的標簽<marquee>可以很容易實現(xiàn)滾動字幕的制作,不是很復雜,可是滾動不平滑、抖動,看不清,而且每滾動一幕之后就會出現(xiàn)一次空白,不能實現(xiàn)首尾連接。滾動字幕也可以用flash來實現(xiàn)。文中主要是用CSS,HTML和JavaScript來設計和實現(xiàn)水平方向向左的滾動字幕,它可以使?jié)L動字幕平滑、首尾相連。每滾動一幕之后,不會出現(xiàn)一次空白。

        1 基本理論

        1.1 HTML與CSS

        HTML(Hyper Text Markup Language,超文本標記語言)和CSS是制作網(wǎng)頁的兩個核心技術。HTML提供網(wǎng)頁的結構,CSS提供網(wǎng)頁的布局[5]。CSS樣式表指的是一些規(guī)則,這些規(guī)則將樣式化屬性和值與文檔中的結構化元素聯(lián)系到一起,從而表達如何呈現(xiàn)文檔[6]。網(wǎng)頁包含內(nèi)容和表現(xiàn)形式這兩個因素。內(nèi)容是指網(wǎng)頁實際要傳遞的信息,包括文本、圖片等。表現(xiàn)形式是指內(nèi)容呈現(xiàn)的樣式,例如字體、文本顏色、布局等,所有用于改變內(nèi)容外觀的部分,都稱之為“表現(xiàn)形式”。通過使用CSS,可以將一個HTML文件的內(nèi)容與有關它的表現(xiàn)形式或風格的信息分離開來[7]。

        使用CSS還有如下的優(yōu)勢:可以使網(wǎng)頁的表現(xiàn)非常統(tǒng)一,并且容易修改;可以支持多種設備;可以減少網(wǎng)頁的代碼量,加快下載顯示的速度;作者和讀者可以自己決定文件的顯示;文件的結構更加靈活[8-10]。

        HTML與CSS是兩個作用不同的語言,它們同時對一個網(wǎng)頁產(chǎn)生作用,因此,必須通過一些方法將CSS與HTML掛接在一起,這樣才能正常工作[11]。

        引入CSS可以采用以下3種方式:

        1)外部樣式表:分導入式和鏈接式,目的都是將一個獨立的CSS文件引入HTML文件。假如將一個文件c1.css引入到HTML文件中,可以有以下方式:

        鏈接式:

        <link href="c1.css"rel="stylesheet"type="text/css"/>

        導入式:

        <style type="text/css">

        @import"c1.css";

        </style>

        2)內(nèi)部樣式表(位于<head>標簽內(nèi)部):將對頁面中各種元素的樣式設置集中寫在<head>和</head>之間,對于單一的網(wǎng)頁,這種方式很方便。但是對一個包含很多頁面的網(wǎng)站,如果每個頁面都以內(nèi)嵌方式設置各自的樣式,就失去了CSS帶來的巨大優(yōu)點。

        例如:

        <style type="text/css">

        p{color:red;}

        </style>

        3)內(nèi)聯(lián)樣式(在HTML元素內(nèi)部):即在標記的style屬性中設定CSS屬性,這種方式本質(zhì)上沒有體現(xiàn)出CSS優(yōu)勢,因此不推薦使用。

        例如:

        <p style="color:red;">內(nèi)容</p>

        1.2 JavaScript

        JavaScript是因特網(wǎng)上最流行的腳本語言,并且可在所有主要的瀏覽器中運行,比方說Internet Explorer,Mozilla,F(xiàn)irefox,Netscape和Opera。

        JavaScript被設計用來向HTML頁面添加交互行為,是一種腳本語言。通常被直接嵌入HTML頁面。JavaScript是一種解釋性語言(就是說,代碼執(zhí)行不進行預編譯)。在HTML文件中有3種方式[12]加載JavaScript,可以位于head部分、body部分和使用外部JavaScript,這些方式與HTML中加載CSS很相似。

        通過JavaScript可以重構整個HTML文檔,可以添加、移除、改變或重排頁面上的項目。

        要改變頁面的某個東西,JavaScript就需要獲得對HTML文檔中所有元素進行訪問的入口。這個入口,連同對HTML元素進行添加、移動、改變或移除的方法和屬性,都是通過文檔對象模型(DOM)來獲得的。用JavaScript對網(wǎng)頁進行的所有操作都是通過DOM進行的。

        1.3 DOM

        DOM(Document Object Model)被稱作文檔對象模型,它是語言和平臺中立的接口,允許程序和腳本動態(tài)訪問和更新文檔的內(nèi)容、結構和風格。

        DOM是一種用于HTML和XML文檔的編程接口。它給文檔提供了一種結構化的表示方法,可以改變文檔的內(nèi)容和呈現(xiàn)方式。DOM把網(wǎng)頁和腳本以及其它的編程語言聯(lián)系了起來。可以通過文檔對象的屬性、方法和事件來掌控、操縱和創(chuàng)建動態(tài)的網(wǎng)頁元素,每一個網(wǎng)頁元素(一個HTML標簽)都對應著一個對象(object)。HTML文檔對象模型定義了訪問和處理HTML文檔的標準方法,HTML文檔中的每個成分都是一個節(jié)點。

        1.3.1 DOM中的getElementById()方法

        getElementById()是DOM Document對象中的一個重要的方法,用于查找文檔中的一個特定的元素,獲得對文檔元素對象的引用。getElementById的字面含義就是“通過ID名來獲得對DOM對象某個元素的引用”,在需要對HTML文檔的某個元素操作時,應當在HTML中給該元素設置一個id屬性,為它指定一個(在文檔中)唯一的名稱,然后就可以用getElementById()獲得想要的元素。得到一個元素的引用后,javascript就可以用它對元素進行使用和修改。用這個方法基本上可以控制頁面所有標簽。

        1.3.2 DOM中的setInterval和clearInterval方法

        DOM中的setInterval方法常用來在網(wǎng)頁中實現(xiàn)動畫,也是網(wǎng)頁動畫的核心。setInterval方法可以根據(jù)設置的時間,重復執(zhí)行一個JavaS-cript自定義函數(shù)或已存在的對象。setInterval通常指定兩個參數(shù)。第一個參數(shù)指定要執(zhí)行的函數(shù),第二個參數(shù)指定間隔時間。如果不使用clearInterval方法清除,setInterval會一直重復運行,直到你關閉瀏覽器??梢岳斫鉃椋簊etInterval的作用就是根據(jù)指定的時間來重復執(zhí)行指定的某段程序,從而完成一個動畫的效果。

        如果對計時函數(shù)不加以處理,那么setInterval將會持續(xù)執(zhí)行相同的代碼,一直到瀏覽器窗口關閉,或者用戶轉(zhuǎn)到了另外一個頁面為止。不過還是有辦法可以終止setInterval函數(shù)的執(zhí)行。當setInterval調(diào)用執(zhí)行完畢時,它將返回一個timer ID,將來便可以利用該值對計時器進行訪問,如果將該ID傳遞給clearInterval,就可以終止被調(diào)用的代碼的執(zhí)行了。

        1.3.2.1 setInterval()定義和用法

        setInterval()方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式。setInterval()方法會不停地調(diào)用函數(shù),直到clearInterval()被調(diào)用或窗口被關閉。由setInterval()返回的ID值可用作clearInterval()方法的參數(shù)。

        語法:setInterval(code,millisec[,"lang"])。

        參數(shù)描述:code必需,要執(zhí)行的代碼串或者是要調(diào)用的函數(shù)名或者是匿名函數(shù)。millisec必須,周期性執(zhí)行或調(diào)用code之間的時間間隔,以毫秒計。

        返回值:一個可以傳遞給Window.clear-Interval(),從而取消對code的周期性執(zhí)行的值。每次調(diào)用setInterval函數(shù)都會產(chǎn)生一個唯一的ID,可以通過clearInterval函數(shù)(此函數(shù)的參數(shù)接收一個setInterval返回的ID)暫停setInterval函數(shù)。

        1.3.2.2 clearInterval()定義和用法

        clearInterval()方法可取消由setInterval()設置的timeout。

        clearInterval()方法的參數(shù)必須是由setInterval()返回的ID值。該方法僅接收一個參數(shù)。

        語法:clearInterval(id_of_setinterval)

        參數(shù)描述:id_of_setinterval是由setInterval()返回的ID值。

        2 設 計

        設定一個固定寬度并且隱藏超出它寬度的內(nèi)容的外容器wrap,里面再放置一個內(nèi)容器content用于存放滾動內(nèi)容(包括復制的內(nèi)容),text2為text1的復制內(nèi)容,通過用JavaScript代碼不斷改變外容器wrap的向左滾動的寬度scrollLeft達到滾動的目的,當滾動至text1與text2的交界處時直接跳回初始位置,因為text1與text2一樣,所以分不出跳動的瞬間,滾動到了一個和當前畫面一樣的位置,結果我們看到的就是連續(xù)的滾動了,從而達到“無縫”滾動的目的。

        3 實 現(xiàn)

        3.1 所用軟件

        可以用Dreamweaver或Visual Studio進行編輯,也可以用記事本等工具編寫。在Dreamweaver中,無論是CSS代碼還是HTML代碼,都有很好的語法提示。在編寫具體CSS代碼時,按空格鍵或者回車鍵都可以觸發(fā)語法提示,按空格鍵直接顯示語法提示,按回車鍵時換行并且顯示語法提示。語法提示可以顯示出屬性,進行選擇,當光標定位到某個屬性上后,按回車鍵,可以選擇該屬性,并且同時顯示出供選擇的屬性值,再從中進行選擇。但是用Dreamweaver編寫JavaScript代碼時,并不會有語法提示、自動完成功能等方便快捷之處,只有語法高亮。用Visual Studio編寫CSS時也有很好的語法提示,和用Dreamweaver有所不同,當用到的開始標簽輸入結束后,會自動加上結束標簽。另外編寫JavaS-cript時,會有很好的語法提示。

        3.2 代碼部分

        用HTML設置頁面元素,確定頁面中的內(nèi)容;用CSS設置元素的CSS屬性,對其進行定位并設置其是否可見;再用JavaScript編寫函數(shù),實現(xiàn)當鼠標移到字幕上時,停止,移出時,繼續(xù)。

        程序中所用的完整代碼和部分注釋如下:

        3.3 運行結果

        把上述代碼也可以包括其中的注釋部分全部復制到一個網(wǎng)頁文件中,打開網(wǎng)頁就可以看到如圖1所示的向左滾動字幕,并且平滑、首尾相連。當鼠標指針移至滾動字幕上時,就停止?jié)L動。當鼠標指針移出滾動字幕時,又繼續(xù)開始滾動。

        圖1 滾動字幕

        3.4 分析討論

        上述代碼由3部分組成:HTML,CSS和JavaScript。

        HTML和CSS部分用于確定網(wǎng)頁中的內(nèi)容和外觀。wrap為外部容器,content為內(nèi)部容器,text1和text2的內(nèi)容和樣式完全相同。text1為滾動文字內(nèi)容,text2為滾動文字內(nèi)容的復制內(nèi)容,其中content的寬度定義非常重要,必須符合下面兩個條件:

        1)content的寬度-text1的寬度≥wrap的寬度。也就是內(nèi)部容器content的寬度不僅要大于外部容器wrap的寬度,而且還要大于或等于wrap和text1的寬度的總和。這個可以理解為如果內(nèi)部容器內(nèi)容沒有超過外部容器的寬度,不需要橫向的滾動就可以看到所有橫向的范圍,那么在JavaScript中使用scrollLeft的時候肯定是無效的了,這時文字內(nèi)容是一點也不會滾動。另外,如果內(nèi)部容器超過外容器的寬度,但是寬度不夠?qū)?,那么在滾動的過程中只是滾動一會兒就停下了,也就是當滾動到內(nèi)部容器的右邊界(包括border邊框)和外部容器的最右邊界(不包括border邊框)重合時,就停止不再滾動了。所以要保證滾動字幕一直滾動,內(nèi)部容器寬度至少是外部容器和滾動內(nèi)容的寬度總和。另外,還要符合下面的要求。

        2)content的寬度至少是text1寬度的兩倍,否則text2和text1的內(nèi)容不能在同一行上,也不能實現(xiàn)最終的效果。

        另外,text1的寬度一般要大于wrap的寬度,此時只用復制一次text1的內(nèi)容到text2中即可。文中的3.2代碼設計中就只復制了一次,因為text1文本內(nèi)容的寬度是大于外容器wrap的寬度。但是,如果text1的寬度小于wrap的寬度,為了滾動能夠“連續(xù)”,需要將字幕的內(nèi)容復制多遍,否則會出現(xiàn)滾動時首尾不連接的現(xiàn)象,原因是text2是連接text1,但text2右邊有空白區(qū)域(因為content的寬度要符合上述的兩個條件,而若text1的寬度小于wrap的寬度時,text1和text2的總寬度就一定會小于content的寬度,所以右邊就會出現(xiàn)空白區(qū)域)。至于字幕的內(nèi)容需要復制多少遍,應根據(jù)具體字幕內(nèi)容的多少來確定。

        只用CSS和HTML代碼,這時看到的是靜止的內(nèi)容,文字并不會滾動。如果要想使文字有動態(tài)的效果,能夠滾動,可以使用javascript來實現(xiàn)。

        javascript代碼部分主要用來實現(xiàn)滾動字幕的滾動和暫停。嵌入到HTML中的javascript代碼需要以<script type=“text/javascript”>開始,以</script>結束。代碼中用到的方法、屬性和事件介紹如下:

        getElementById()方法、setInterval()方法和clearInterval()方法在前面已介紹。

        innerHTML屬性:設置或獲取位于對象起始和結束標簽內(nèi)的HTML。

        scrollLeft屬性:對象的滾動寬度。

        offsetWidth屬性:表示對象實際寬度。

        onmouseover事件:鼠標指針移動到指定的對象上時事件發(fā)生,執(zhí)行相應的代碼或函數(shù)。用來設置鼠標移入?yún)^(qū)域時繼續(xù)滾動。

        onmouseout事件:鼠標指針移出指定的對象時發(fā)生。用來設置鼠標移出區(qū)域時繼續(xù)滾動。

        代碼中用到的setInterval和clearInterval方法是window對象的方法,但由于window對象位于瀏覽器對象模型層次結構的頂端,所以在引用window對象的屬性或者方法時并不需要使用window對象名。因此,也可以將window.setInterval()和window.clearInterval()簡寫為setInterval()和clearInterval()。

        在代碼中兩次用到d=window.setInterval(roll,speed),如下所示:

        第一次是單獨使用,如果沒有這一句,當打開網(wǎng)頁時,字幕不會滾動。另一次是在onmouseout事件觸發(fā)的函數(shù)內(nèi)部使用,如果沒有這一句,當鼠標指針從字幕上移出時,字幕就不再滾動;這兩次缺一不可。

        javascript代碼中的自定義函數(shù)roll是核心,如下所示:

        function roll()

        上面的w.scrollLeft+=1語句中,w代表id為wrap的元素,w.scrollLeft表示元素wrap內(nèi)的內(nèi)容向左滾動的距離,w.scrollLeft+=1表示wrap內(nèi)的內(nèi)容向左滾動的距離在原來的基礎上再加1像素。語句if(w.scrollLeft-t2.offset-Width==0)w.scrollLeft=0表示如果wrap內(nèi)的內(nèi)容向左滾動的距離等于text2(這里t2代表id為text2的元素)的寬度時,wrap向左滾動的距離又從0開始,由于text1和text2完全一樣,所以就看不出跳動的瞬間。roll函數(shù)通過語句window.setInterval(roll,speed)來調(diào)用,在一定的時間間隔調(diào)用函數(shù)roll一次,speed為時間間隔,speed值越小,滾動越快。

        4 結 語

        用HTML+CSS+JavaScript設計和實現(xiàn)了向左滾動的字幕,可以實現(xiàn)平滑、連續(xù)、無縫的效果,每滾動一幕之后,不會出現(xiàn)一次空白。當鼠標移至滾動字幕上時停止?jié)L動;當鼠標移出字幕時,繼續(xù)滾動,可廣泛用在網(wǎng)頁設計中。文中滾動的內(nèi)容沒有加超鏈接,需要時可以加上標簽<a>來實現(xiàn)。另外要注意,當滾動內(nèi)容寬度大于顯示容器的寬度時,只用復制一次滾動內(nèi)容即可,但是當滾動內(nèi)容寬度小于顯示容器的寬度時,需要復制多次滾動內(nèi)容。同理也可實現(xiàn)向右滾動的字幕。向下或向上的垂直方向的滾動字幕實現(xiàn)原理與其相似,實際上比水平方向的滾動字幕要簡單一些。另外,滾動圖片的實現(xiàn)原理和其相似。

        [1] 鄭俊生,姜敏.使用DIV+CSS進行網(wǎng)頁設計應用研究[J].電腦開發(fā)與應用,2008,21(9):60-63.

        [2] 宣豐敏.畢業(yè)生就業(yè)信息管理系統(tǒng)的設計和實現(xiàn)[D]:[碩士學位論文].上海:華東師范大學軟件學院,2010:7-8.

        [3] 葉青.HTML+CSS+JavaScript實用詳解[M].北京:電子工業(yè)出版社,2008:234-235.

        [4] 曾順.精通CSS+DIV網(wǎng)頁樣式與布局[M].北京:人民郵電出版社,2007:314-315.

        [5] W3C.HTML &CSS[EB/OL].(2012-02-03)[2012-02-12].http://www.w3.org/standards/webdesign/htmlcss.

        [6] Hkon Wium Lie.Cascading Style Sheets Norway:University of Oslo[ED/OL].(2012-02-05)[2012-02-12].http://people.opera.com/howcome/2006/phd.

        [7] 張俊蘭,劉翼,鐵宏軍.基于CSS技術的網(wǎng)頁設計應用研究[J].延安大學學報:自然科學版,2010,29(3):34-39.

        [8] Wikipedia.Cascading Style Sheets[EB/OL].(2012-02-05)[2012-02-12].http://en.wikipedia.org/wiki/Css.

        [9] Andy Budd,Simon Collison,Cameron Moll.精通CSS:高級Web標準解決方案[M].陳劍甌,譯.2版.北京:人民郵電出版社,2010:3-5.

        [10] 羅威,陳偉.基于模板和CSS技術的Web頁面定制[J].計算機應用研究,2008,25(7):2100-2103.

        [11] 溫謙.CSS設計徹底研究[M].北京:人民郵電出版社,2008:7-8.

        [12] W3School.把JavaScript放置到何處[EB/OL].(2012-02-05)[2012-02-12].http://www.w3school.com.cn/js/js_whereto.a(chǎn)sp.

        猜你喜歡
        字幕網(wǎng)頁代碼
        Word和Excel聯(lián)手字幕添加更高效
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        基于CSS的網(wǎng)頁導航欄的設計
        電子制作(2018年10期)2018-08-04 03:24:38
        基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
        電子制作(2017年2期)2017-05-17 03:54:56
        整合適應選擇度下的動畫電影字幕翻譯——以《冰河世紀》的字幕漢譯為例
        唐山文學(2016年11期)2016-03-20 15:25:57
        網(wǎng)頁制作在英語教學中的應用
        電子測試(2015年18期)2016-01-14 01:22:58
        論紀錄片的字幕翻譯策略
        人間(2015年22期)2016-01-04 12:47:26
        少妇精品偷拍高潮少妇在线观看| 国产精品深田咏美一区二区| 老熟女熟妇嗷嗷叫91| 亚洲人妻精品一区二区三区| 国产精品会所一区二区三区| 午夜视频在线在免费| 91精彩视频在线观看| 水蜜桃视频在线观看免费18| 91精品久久久老熟女91精品 | 久久精见国产亚洲av高清热| 欧美熟妇另类久久久久久不卡| 欧美老妇与zozoz0交| 亚洲伦理一区二区三区| 日本女优久久精品久久| 日日日日做夜夜夜夜做无码| 国产精品久久婷婷六月丁香| 国产91在线|亚洲| 人妻少妇被粗大爽视频| 日韩精品久久久久久免费| 日本高清一区二区三区水蜜桃| 亚洲色图视频在线播放| 日韩人妻中文字幕专区| 午夜福利理论片高清在线观看| 91av国产视频| 亚洲免费av第一区第二区| 无套内射在线无码播放| 中文字幕一区二区三区精彩视频| 欧美亚洲尤物久久综合精品| 99久久国产免费观看精品 | 9丨精品国产高清自在线看| 女人18毛片aa毛片免费| 99国产精品久久久蜜芽| 一级片久久| 亚洲av网站在线免费观看| 欧美成人www在线观看| 人人狠狠综合久久亚洲婷婷| 亚洲素人日韩av中文字幕| 一本色综合网久久| 国产成人综合在线视频| 亚洲欧洲无码精品ⅤA| 色婷婷精品久久二区二区蜜臀av |