很多人可能在調用css樣式都是使用傳統的方式調用其實有很多方法可以進行調用,如使用內嵌樣式,在html直接加入樣式,給定外部樣式文件,在外部樣式文件中使用 @import
url(樣式文件路徑),這些都是大家常用的,其實還有就是使用javascript進行樣式的定義。
第一種:
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);
但是在上面只能在Firefox兼容,在IE里卻不支持。
var sheet =
document.createStyleSheet();
sheet.addRule(’body’,'background-color:red’);
如果按照上面的話就能成功,但是很麻煩,要把字符串拆開寫。
我一直在搜索著用javascript定義樣式的代碼,終于找到了,代碼如下。
document.createStyleSheet(”javascript:’body{background-color:blue;’”);
但用上面的javascript代碼唯一的缺點就是url 最大 255 個字符,長一點的就不行了,經過 SXPCrazy 提示,將代碼進行修改成如下:
window.style=”body{background-color:blue;”;
document.createStyleSheet(”javascript:style”);
完美解決!!代碼:
<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>
以上是完整代碼!
本文關鍵字 javascript,網頁設計,javascript調用樣式,瘋狂IT
大多數的CSS屬性都很容易使用。常常,當您對標記語言的元素使用CSS屬性時,產生的結果會隨著您刷新頁面而立即呈現。而另一些CSS屬性,卻會有一些復雜,且只能在給定的環境下才會工作。
Z-index屬性便屬于上面所說的后面的那一組。Z-index無疑的比其他任何屬性都會頻繁的導致(兼容性)上的混亂和(開發者心理上)的挫敗感。但滑稽的是,一旦你真正理解了Z-index,你會發現它卻是一個非常容易使用的屬性,并且會為解決很多layout方面的挑戰提供強有力的幫助。
在這篇文章里,我們會準確的說明究竟什么是Z-index,它為什么會這么不為人所了解,并一起討論一些關于它的實際使用中的問題。我們同時會描述一些會遇到的瀏覽器間的差異,那些存在于已有版本的IE及Firefox瀏覽器中的獨特問題。這篇關于Z-index屬性的全透視文章將會為那些有著良好基礎的開發者在使用Z-index屬性時提供強大的自信心及強有力的幫助。
這是什么?
Z-index屬性決定了一個HTML元素的層疊級別。元素層疊級別是相對于元素在Z軸上(與X軸Y軸相對照)的位置而言。一個更高的Z-index值意味著這個元素在疊層順序中會更靠近頂部。這個層疊順序沿著垂直的線軸被呈現。
為了更清晰的描述Z-index是如何工作的,上面的這張圖片夸大展示了層疊元素在視覺位置上的關系。
自然的層疊順序
在一個HTML頁面中,自然的層疊順序(也就是元素在Z軸上的順序)是由很多因素決定的。下面的是一個列表,它展示的列表項是處于一個層疊環境(stacking context,暫時未找到合適的漢語翻譯,應該是指層疊的元素所處的那個層疊的環境)中,這些項是處于這個層疊環境的底部的。這個列表中的項都沒有被賦予Z-index屬性。
元素的背景和邊框會創建一個stacking context
引用:
具有負值的stacking contexts元素,按照出現的先后順序排列(越靠后層級越靠上)
沒有被定位,沒有浮動的塊級元素,按照出現的先后順序排列
沒有被定位,浮動的元素,按照出現的先后順序排列
內聯元素,按照出現的先后順序排列排列
被定位的元素,按照出現的先后順序排列
Z-index 屬性,當被正確使用的時候,會改變自然的層疊順序。
當然,除非元素已經被定位按照互相交疊的形式展現,否則元素的層疊順序并不會特別的明顯。下面的,負邊距的BOX被拿來展示,用以說明自然的層疊順序。
上面的BOX被定義了不同的背景和邊框色,并且后兩個是交錯的并且定義了負值的頂部邊距,所以我們可以看到自然的層疊順序。灰色的BOX在標記中位于第一位,藍色的BOX位于第二位,金色的排在第三。應用的負邊距明確的表明這個事實:這些元素未被設置Z-index 屬性;它們的層疊順序是自然的,或者是默認的,復合規則的。產生交錯的現象都是因為負值的邊距。
為什么它會產生混亂?
即使Z-index并不是一個難以理解的屬性,但它卻會因錯誤的假設而使很多初級的開發人員陷入混亂。混亂發生的原因是因為Z-index只能工作在被明確定義了absolute,fixed或relative 這三個定位屬性的元素中。
為了證明Z-index只能工作于被定位了的元素中,這里有同樣的三個BOX,它們應用了Z-index屬性來嘗試打破他們自然的層疊順序。
灰色的BOX具有“9999”的Z-index值,藍色的BOX有“500”的Z-index值,金色的有“1”的Z-index值。合乎邏輯的,你會認為這三個BOX的層疊順序會倒過來。但事實卻不是這樣,因為這些元素都沒被設定position屬性。
下面是同樣的三個BOX,分別都被設置了position: relative,他們的Z-index值還是按照上面那段設定。
現在的結果是我們所期待的了:這些元素的層疊順序實現了反向;灰色的BOX覆蓋在藍色之上,藍色的覆蓋在金色之上。
語法
- #grey _box?{?? ?
- ???? width :? 200px ;?? ?
- ???? height :? 200px ;?? ?
- ???? border :? solid ? 1px ? #ccc ;?? ?
- ???? background :? #ddd ;?? ?
- ???? position :? relative ;?? ?
- ???? z-index :? 9999 ;?? ?
- }?? ?
- ?
- #blue _box?{?? ?
- ???? width :? 200px ;?? ?
- ???? height :? 200px ;?? ?
- ???? border :? solid ? 1px ? #4a7497 ;?? ?
- ???? background :? #8daac3 ;?? ?
- ???? position :? relative ;?? ?
- ???? z-index :? 500 ;?? ?
- }?? ?
- ?
- #gold _box?{?? ?
- ???? width :? 200px ;?? ?
- ???? height :? 200px ;?? ?
- ???? border :? solid ? 1px ? #8b6125 ;?? ?
- ???? background :? #ba945d ;?? ?
- ???? position :? relative ;?? ?
- ???? z-index :? 1 ;?? ?
- }?
重復一下,Z-index屬性只能工作于那些被定義了position屬性的元素中。這并沒有被足夠的重視,尤其是對于那些新手。
</SELECT>