中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

JavaScript插入動(dòng)態(tài)樣式實(shí)現(xiàn)代碼

2024-04-22    分類: 網(wǎng)站建設(shè)

能夠把CSS樣式包含到HTML頁面中的元素有兩個(gè)。其中,<link>元素用于包含來自外部的文件,而<style>元素用于指定嵌入的樣式

與動(dòng)態(tài)腳本類似,所謂動(dòng)態(tài)樣式是指在頁面剛加載時(shí)不存在的樣式;動(dòng)態(tài)樣式是在頁面加載完成后動(dòng)態(tài)添加到頁面中。

我們以下面這個(gè)典型的<link>元素為例:

<link rel="stylesheet" type="text/css" href="style.css">使用DOM代碼可以很容易的動(dòng)態(tài)創(chuàng)建出這個(gè)元素:

var link = document.createElement("link"); link.rel = "stylesheet"; link.type = "text/css"; link.href = "style.css"; var head = document.getElementsByTagName("head")[0]; head.appendChild(link); 以上代碼在所有主流瀏覽器中都可以正常運(yùn)行。需要注意的是,必須將<link>元素添加到<head>而不是<body>元素,才能保證在所有瀏覽器中的行為一致。整個(gè)過程可以用一下函數(shù)來表示:

function loadStyles(url) { var link = document.createElement("link"); link.rel = "stylesheet"; link.type = "text/css"; link.href = url; var head = document.getElementsByTagName("head")[0]; head.appendChild(link); } loadStyles("style.css") 加載外部樣式文件的過程是異步的,也就是加載樣式與執(zhí)行JavaScript代碼的過程沒有固定的次序。

另一種定義樣式的方式是使用<style>元素來包含嵌入式CSS,如下所示:

<style> body { background-color: red; } </style>

按照相同的邏輯,下列DOM代碼應(yīng)該是有效的:

var style = document.createElement("style"); style.type = "text/css"; style.appendChild(document.createTextNode("body{background-color:red;}")); var head = document.getElementsByTagName("head")[0]; head.appendChild(style); 以上代碼可以在Firefox、Safrai、Chrome和Opera中運(yùn)行,在IE中則會(huì)報(bào)錯(cuò)。IE將<style>視為一個(gè)特殊的、與<script>類似的節(jié)點(diǎn),不允許訪問其子節(jié)點(diǎn)。事實(shí)上,IE此時(shí)拋出的錯(cuò)誤與向<script>元素添加子節(jié)點(diǎn)時(shí)拋出的錯(cuò)誤相同。解決IE中的這個(gè)問題的辦法,就是訪問元素的styleSheet屬性,該屬性又有一個(gè)cssText屬性,可以接受CSS代碼,如下面的例子所示:

var style = document.createElement("style"); style.type = "text/css"; try { style.appendChild(document.createTextNode("body{background-color:red}")); } catch (ex) { style.styleSheet.cssText = "body{background-color:red}"; } var head = document.getElementsByTagName("head")[0]; head.appendChild(style); 與動(dòng)態(tài)添加嵌入式腳本類似,重寫后的代碼使用了try-catch語句來捕獲IE拋出的錯(cuò)誤,然后再使用針對(duì)IE的特殊方式來設(shè)置樣式。一次通用的解決方案如下:

function loadStyleString(css) { var style = document.createElement("style"); style.type = "text/css"; try { style.appendChild(document.createTextNode(css)); } catch (ex) { style.styleSheet.cssText = css; } var head = document.getElementsByTagName("head")[0]; head.appendChild(style); } loadStyleString("body{background-color:red}");

本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計(jì)制作公司-創(chuàng)新互聯(lián)成都公司!

網(wǎng)站名稱:JavaScript插入動(dòng)態(tài)樣式實(shí)現(xiàn)代碼
標(biāo)題來源:http://www.rwnh.cn/news39/324739.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、電子商務(wù)、品牌網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、企業(yè)建站搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

1成都定制網(wǎng)站建設(shè)
凤庆县| 台州市| 云龙县| 织金县| 南投市| 凤阳县| 莲花县| 沁阳市| 克什克腾旗| 丹寨县| 侯马市| 崇州市| 兴国县| 江孜县| 正定县| 永登县| 桃园县| 衡水市| 临城县| 涿州市| 伊川县| 兴安盟| 方正县| 盐源县| 合水县| 宁化县| 郧西县| 芜湖县| 丹棱县| 哈尔滨市| 永仁县| 合肥市| 盐津县| 娱乐| 白水县| 阜阳市| 海伦市| 沛县| 太原市| 南投县| 左云县|