天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript CSS修改學(xué)習(xí)第三章 修改樣式表

請注意代碼和傳統(tǒng)的DHTML的區(qū)別。在DHTML你通過直接修改頁面上的特定元素來改變樣式,而這里的代碼修改的是樣式表。
在這里查看W3C DOM-CSS的兼容性列表。
定義
一個頁面總是包含一個或者幾個樣式表,一個樣式表里面包含一條或者幾條規(guī)則,一條規(guī)則里有詳細(xì)的樣式聲明。這個頁面的樣式表如下:
復(fù)制代碼 代碼如下:
<link rel="stylesheet" href="../quirksmode.css">
<style>
<!--
@import url("test.css");
p,h2,h3 {
    padding-right: 10px;
}
pre.test + * {
    margin-right: 20%;
}
pre.test {
    background-color: #ffffff;
}
-->
</style>

我們的目的是修改pre.test的白色背景為#EEF0F5。
樣式表
所有外鏈或者內(nèi)嵌的樣式表都能通過document.styleSheets數(shù)組訪問。quirksmode.css,這個網(wǎng)站的通用樣式表保存在document.styleSheets[0]里。上面這段特別的樣式表段就保存在document.styleSheets[1]。我們就在這段代碼上進行測試。
cssRules[]和rules[]
一條規(guī)則就是一個或者多個元素的一組聲明。這里有兩種訪問規(guī)則的方法。W3C堅持使用cssRules[],而微軟堅持rules[]。兩種方法都是用索引數(shù)字,第一條規(guī)則就是(css)Rules[0],第二條就是(css)Rules[1]等等。
復(fù)制代碼 代碼如下:
var theRules = new Array();
if (document.styleSheets[1].cssRules)
    theRules = document.styleSheets[1].cssRules
else if (document.styleSheets[1].rules)
    theRules = document.styleSheets[1].rules

現(xiàn)在theRules就包含了所有的樣式規(guī)則。規(guī)則的數(shù)目
這是樣式表:
復(fù)制代碼 代碼如下:
@import url("test.css");
p,h2,h3 {
    padding-right: 10px;
}
pre.test + * {
    margin-right: 20%;
}
pre.test {
    background-color: #ffffff;
}

在你看來可能是4條規(guī)則:@import 然后是p,h2,h3,接著pre.test + *,最后是pre.test。然而瀏覽器可不這么看。
Safari看見的是4條規(guī)則:
0、undefined
1、P
2、PRE.test[CLASSS~="test"]+*
3、PRE.test[CLASSS~="test"]
注意大寫
IE7beta3看見了5條:
0、P
1、H2
2、H3
3、PRE.test + *
4、PRE.test
注意大寫
Mac IE也看見5條:
0、P
1、H2
2、H3
3、PRE.test * (注意沒有+號)
4、PRE.test
注意大寫
Mozilla和Opera 9看見4條:
0、undefined
1、p,h2,h3
2、pre.test + *
3、pre.test
注意小寫
非常棒的混亂!
1、IE認(rèn)為p,h2,h3是三條而不是一條規(guī)則,而Safari則只取p。知道現(xiàn)在我才知道這是一種不正確的寫法。
2、Mac IE把選擇器改成了pre.test *,這樣含義就非常不一樣了。非常嚴(yán)重的問題。
3、除了Safari給pre.test添加了不必要的表達式以外,這個是支持最好的了。
所以要訪問pre.test在Safari和Mozilla里需要cssRules[3],而IE是rules[4],早期的Mozilla是cssRules[5]。很可愛,不是么?
沒有關(guān)鍵字
所以如果使用索引值的話問題就非常嚴(yán)重。我們希望能這樣訪問:
document.styleSheets[1].cssRules['PRE.test']這樣我就能訪問pre的樣式表規(guī)則了。但是W3C或者其他瀏覽器貌似不需要這樣的訪問樣式表的方法。但是所有的文檔在這個問題上都保持沉默。
這個失敗意味著你基本上沒法訪問規(guī)則了。
樣式聲明
假設(shè)我們已經(jīng)訪問了一條規(guī)則。現(xiàn)在需要改變其中一條聲明。表達式如下:
復(fù)制代碼 代碼如下: rule.style.color = '#0000cc';
W3C的方法是:
復(fù)制代碼 代碼如下: rule.style.setProperty('color','#00cc00',null);
因為style.color簡單的多,所以我不想用這個seProperty()。
例子
打算改變pre的顏色,代碼如下:
為了保證能用,我把pre的規(guī)則寫在最后一條。很丑,但是這是唯一的辦法:
復(fù)制代碼 代碼如下:
function changeIt() {
    if (!document.styleSheets) return;
    var theRules = new Array();
    if (document.styleSheets[1].cssRules)
        theRules = document.styleSheets[1].cssRules
    else if (document.styleSheets[1].rules)
        theRules = document.styleSheets[1].rules
    else return;
    theRules[theRules.length-1].style.backgroundColor = '#EEF0F5';
}

翻譯地址:http://www.quirksmode.org/dom/changess.html
轉(zhuǎn)載請保留以下信息
作者:北玉(tw:@rehawk)

JavaScript技術(shù)JavaScript CSS修改學(xué)習(xí)第三章 修改樣式表,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品嫩草影院免费看 | 亚洲黄色网页 | 欧洲最大无人区免费高清完整版 | 青青久在线视频免费观看 | 中文字幕亚洲无线码高清不卡 | 女人麻豆国产香蕉久久精品 | 好色美女小雅 | 亚洲AV无码乱码国产麻豆穿越 | 国产视频精品在线偷拍 | 男生扒开美女尿口戳戳 | 国产精品久久人妻无码蜜 | 肉动漫3D卡通无修在线播放 | 沦为公交两奶头春药高潮迭起 | 亚洲国产成人综合 | 国产亚洲制服免视频 | 久久99精品国产99久久6男男 | 粗好大用力好深快点漫画 | 99久久99久久精品国产片果冻 | 哒哒哒高清视频在线观看 | 在线免费观看亚洲视频 | 无遮挡h肉3d动漫在线观看 | 国产亚洲精品视频在线网 | 黄色天堂网站 | 亚洲精品午夜aaa级久久久久 | 99视频精品全部免费 在线 | 18国产精品白浆在线观看免费 | WWWXXXX兽交| 精品国产免费观看久久久 | 蜜桃视频无码区在线观看 | 国产成人综合在线观看 | 蜜芽tv在线观看免费网站 | 在线观看日本污污ww网站 | 北条麻妃久久99精品 | 又色又爽又黄gif动态视频 | 东日韩二三区 | 性肥胖BWBWBW| asmr淫语| 精品国产乱码久久久久久乱码 | 精品国产自在天天线2019 | 国产亚洲精品久久久久久久软件 | 在线天天看片免费视频观看 |