溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

css樣式優(yōu)先級及層疊順序排序的示例分析

發(fā)布時間:2021-10-12 15:29:02 來源:億速云 閱讀:148 作者:小新 欄目:移動開發(fā)

這篇文章主要介紹css樣式優(yōu)先級及層疊順序排序的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

一般情況下
[1位重要標(biāo)志位] > [4位特殊性標(biāo)志] > 聲明先后順序
!important > [ id > class > tag ]
使用!important可以改變優(yōu)先級別為最高,其次是style對象,然后是id > class >tag ,另外,另外在同級樣式按照申明的順序后出現(xiàn)的樣式具有高優(yōu)先級。
­
先來看下!important 這個詭異的東西

代碼如下:


<style type="text/css">
div{background: red !important; background: blue}
</style>


除了IE6,其他瀏覽器都會顯示背景為紅色,正是!important的作用,意思就是只要我在這里我就是最重要的啦,任何東西都不能取代我,沒看見都是一個 !外加一個英文單詞 important 嗎?很形象,很貼切了。IE6這里會顯示背景為藍色,并不是IE6不支持!important,而是它會按照樣式聲明順序后出現(xiàn)的覆蓋前面的,此時它已經(jīng)不認(rèn)識!important了,它六親不認(rèn)了。這正是廣為流傳的IE6 hack之一。而如果這樣寫會正常顯示背景為紅色:

代碼如下:


<style type="text/css">
div{background: blue; background: red !important; }
</style>


再來看下4位特殊性標(biāo)志 [0.0.0.0]
從左至右,每次給某一個位置+1,前一段對后一段具有無可辯駁的壓倒性優(yōu)勢。無論后一位數(shù)值有多大永遠無法超過前一位的1。
1,內(nèi)聯(lián)樣式 [1.0.0.0]
A:<span id="demo" style="color:red "></span>
B:還有就是JS控制的內(nèi)聯(lián)樣式style對象,document.getElementById("demo").style.color="red";
這兩者屬于同一級別,不過一般情況是JS控制的內(nèi)聯(lián)樣式優(yōu)先級高,這與先后順序申明有關(guān)系與本質(zhì)無關(guān),因為往往DOM操作是在DOM樹加載完畢之后。
2,ID選擇器 [0.1.0.0]
3,類,屬性,偽類 選擇器 [0.0.1.0]
4,元素標(biāo)簽,偽元素 選擇器 [0.0.0.1]
關(guān)于CSS選擇器可以查看W3C或者CSS的手冊,不啰嗦了。
注意下 偽類選擇器
LVHA偽類,樣式按LVHA優(yōu)先級順序從右至左覆蓋,不同的順序會產(chǎn)生不同的效果。
a:link - 默認(rèn)鏈接樣式
a:visited - 已訪問鏈接樣式
a:hover - 鼠標(biāo)懸停樣式
a:active - 鼠標(biāo)點擊樣式
最后寫下關(guān)于JS控制內(nèi)聯(lián)樣式 帶!important的現(xiàn)象:
看下正常的Demo1

代碼如下:


<style type="text/css">
div{background: red !important; height:20px;}
#demo1{ background: green;}
.demo1{ background:blue;}
</style>

代碼如下:


<div class="demo1" id="demo1" ></div>

代碼如下:


<script type="text/javascript">
document.getElementById("demo1").style.background="black";
</script>


最終顯示背景為紅色,這應(yīng)該不會有什么問題, !important 放到哪都會改變優(yōu)先級的,而后面的JS代碼也不會改變優(yōu)先級。
--------------------------------------------------------------------------------
另外一個Demo2:

代碼如下:


<style type="text/css">
div{background: red !important; height:200px;}
#demo2{ background: green;}
.demo2{ background: blue;}
</style>

代碼如下:


<div class="demo2" id="demo2" ></div>

代碼如下:


<script type="text/javascript">
document.getElementById("demo2").style.background="black";
</script>


IE6,7 顯示 紅色
FF2+ 顯示 黃色
Opera9+ 顯示 紅色
Safari 顯示 黃色
--------------------------------------------------------------------------------
&shy;Demo3:

代碼如下:


<style type="text/css">
div{background: red !important; height:200px;}
#demo3{ background: green;}
.demo3{ background: blue;}
</style>

代碼如下:


<div class="demo3" id="demo3" > </div>&shy;

代碼如下:


<script type="text/javascript">
document.getElementById("demo3").style.background="black !important";
</script>


IE6,7 顯示紅色
FF2+ 顯示黃色
Opera9+ 顯示黑色
Safari 顯示黑色
--------------------------------------------------------------------------------
&shy;解釋下上面兩個例子
&shy;JS控制的style對象 實際就是內(nèi)聯(lián)樣式style,這個沒錯
&shy;
但是對于 JS控制style對象屬性值里增加的!important 三個瀏覽器卻給出了不同的結(jié)果:
&shy;IE:JS控制style對象屬性值完全覆蓋內(nèi)聯(lián)style屬性值,不支持Element.style.property="value !important",將報錯:參數(shù)無效。
FF2+:不完全支持Element.style.property="value !important" : !important無效,不會報錯, 如果內(nèi)聯(lián)style屬性值無!important,則完全覆蓋,有!important 則內(nèi)聯(lián)style屬性優(yōu)先級最高,不會受JS控制style的任何影響。
Opera9+ :JS控制style對象屬性值完全覆蓋內(nèi)聯(lián)style屬性值,支持Element.style.property="value !important"。
Safari:支持Element.style.property="value !important" ,如果內(nèi)聯(lián)style屬性值無!important,則完全覆蓋,有!important 則內(nèi)聯(lián)style屬性優(yōu)先級最高,不會受JS控制style的任何影響。

css樣式優(yōu)先級是按照樣式表中出現(xiàn)順序還是按照元素中class或者id值的聲明順序呢?
以前一直以為是class中聲明的遲的值優(yōu)先級高,其實是根據(jù)樣式表中出現(xiàn)的順序來的。
代碼:

代碼如下:


<style type="text/css">
div{ height: 200px; width: 200px; background: red; }
.b{ background: green; }
.a{ background: blue;}
</style>
</head>
<body>
<div class="a b" 2>
</div>
</body>


div的樣式會顯示blue的樣式顏色。
學(xué)透前端行業(yè)所有技術(shù),玩遍北京周邊所有城市。然后我會回到那個生我養(yǎng)我的地方,因為有親人的地方才是家。

以上是“css樣式優(yōu)先級及層疊順序排序的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI