javascript動態處理css(摘錄)

來源:互聯網
上載者:User
有很多提供動態建立 style 節點的方法,但是大多數都僅限於外部的 css 檔案。如何能使用程式產生的字串動態建立 style 節點,我搞了2個小時。

靜態外部 css 檔案文法:

@import url(style.css);

動態外部 css 檔案載入的方法有如下:

第一種:
var style = document.createElement('link');
style.href = 'style.css';
style.rel = 'stylesheet';
style.type = 'text/css';
document.getElementsByTagName('HEAD').item(0).appendChild(style);

第二種簡單:
document.createStyleSheet(style.css);

動態 style 節點,使用程式產生的字串:

var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML="body{ background-color:blue; }";
document.getElementsByTagName('HEAD').item(0).appendChild(style);

很遺憾,上面的代碼在 ff 裡面成功,但是 ie 不支援。從老外論壇得到代碼:

var sheet = document.createStyleSheet();
sheet.addRule('body','background-color:red');

成功,但是很麻煩,要把字串拆開寫,長一點的寫死。

接著搜,在一個不知道什麼國家的什麼語言的 blog 上找到代碼:

document.createStyleSheet("javascript:'body{background-color:blue;'");

成功,此人實在厲害,但是問題出來了,url 最大 255 個字元,長一點的就不行了,經過 SXPCrazy 提示,改成:

window.style="body{background-color:blue;";
document.createStyleSheet("javascript:style");

完美解決!!代碼:

<html>
<head>
<script>
function blue(){
if(document.all){
window.style="body{background-color:blue;";
document.createStyleSheet("javascript:style");
}else{
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML="body{ background-color:blue }";
document.getElementsByTagName('HEAD').item(0).appendChild(style);
}
}
</script>
</head>
<body>
<input type="button" value="blue" onclick="blue();"/>
</body>
</html>

相關文章

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.