大家都知道css是根據(jù)樣式表名字來給名字匹配的html元素添加對(duì)應(yīng)的效果的,但是有時(shí)候一個(gè)html元素卻用了幾個(gè)css樣式表,那么這幾個(gè)樣式表之間是怎么樣的關(guān)系呢?最終的頁面效果會(huì)是什么樣的呢?
下面我們來說一下css的三大特性,徹底搞懂多個(gè)css樣式表之間是如何相愛相殺的。
我們可以看到我們給了一個(gè)div容器兩個(gè)不同的樣式表,但是最終在瀏覽器展現(xiàn)的效果是name1這個(gè)樣式生效了css去掉a標(biāo)簽背景顏色,而name2仿佛失蹤了一樣,這是為什么呢?
CSS( Style )又稱為層疊樣式表css去掉a標(biāo)簽背景顏色,他有一個(gè)層疊性的性質(zhì),這個(gè)性質(zhì)就是用來解決如上述情況下引起的樣式?jīng)_突問題。
當(dāng)多個(gè)樣式作用于同一個(gè)(同一類)標(biāo)簽時(shí),樣式發(fā)生了沖突,總是執(zhí)行后邊的代碼(后邊代碼層疊前邊的代碼),和標(biāo)簽調(diào)用選擇器的順序沒有關(guān)系。所以我們可以看到在style中name2在name1之前生成,但是即便name1書寫在name2的前面它也不會(huì)被覆蓋,因?yàn)闆Q定性因素是css樣式表中的書寫順序。這是因?yàn)闉g覽器渲染網(wǎng)頁,會(huì)先下載文檔內(nèi)容,加載頭部的樣式資源,然后按照從上而下,自外而內(nèi)的順序渲染DOM內(nèi)容,所以寫在前面的樣式會(huì)被覆蓋掉。
二. 繼承性
CSS繼承性是指被包在內(nèi)部的標(biāo)簽將擁有外部標(biāo)簽的樣式性質(zhì)。他的前提是元素之間存在包含關(guān)系。
并不是所有有包含關(guān)系的元素都可以繼承樣式,字體,文本等屬性可以在css中實(shí)現(xiàn)繼承,例如文字顏色、大小、字體、粗細(xì)等等。而邊距,背景等屬性就不被繼承。
特殊情況:
h系列不能繼承文字大小。
a標(biāo)簽不能繼承文字顏色。
下面來看看效果圖:
三.優(yōu)先級(jí)
定義css樣式時(shí),經(jīng)常出現(xiàn)兩個(gè)或更多規(guī)則應(yīng)用在同一元素上,這時(shí)就會(huì)出現(xiàn)優(yōu)先級(jí)的問題。
下面幾種不同的情況:
第一種比較:都只有一個(gè)選擇器的時(shí)候,可以看出,id選擇器選擇下的p元素樣式生效了。
第二種比較: 有多個(gè)選擇器的時(shí)候,明顯的可以看到,多選擇器選中的樣式生效了,單個(gè)選擇器打不過呀。
第三種比較:多選擇器選中之間的比較,這就可以看出id選擇器+id選擇器最厲害了。