9-1 樣式的繼承
CSS的某些樣式是具有繼承性的,那麽什麽是繼承呢?
繼承是一種槼則,它允許樣式不僅應用於某個特定html標簽元素,而且應用於其後代。
如某種顔色應用於p標簽,這個顔色設置不僅應用p標簽,還應用於p標簽中的所有子元素文本,這裡子元素爲span標簽。
p{color:red;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
可見右側結果窗口中p中的文本與span中的文本都設置爲了紅色。
但注意有一些css樣式是不具有繼承性的。如border:1px solid red;
p{border:1px solid red;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
代碼的作用只是給p標簽設置了邊框爲1像素、紅色、實心邊框線,而對於子元素span是沒用起到作用的。
9-2 選擇器的優先級
學過很多CSS3選擇器,每個選擇器是有優先級的。
CSS3中選擇器的優先級,我們先來看一個例子:
<body> <!--我們給一個div分別設置了id、class屬性,然後寫了行内樣式--> <div id="box" class="dv" style="color:orange"> 我是一個idv </div> </body>
<style> /*我們分別使用id選擇器、類選擇器、標簽選擇器、通配符選擇器給div設置不同的字體顔色*/ #box{ color:red; } .dv{ color:blue; } div{ color:black; } *{ color:green; } </style>
技術點的解釋:
1、如果一個元素使用了多個選擇器,則會按照選擇器的優先級來給定樣式。
2、選擇器的優先級依次是: 内聯樣式 > id選擇器 > 類選擇器 > 標簽選擇器 > 通配符選擇器
9-3 權值計算-特殊性
爲同一個元素設置不同的CSS樣式代碼,元素會啓用哪一個CSS樣式呢?
下面我們一起來看一下代碼:
p{color:red;} .first{color:green;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
p和.first都匹配到了p這個標簽上,那麽會顯示哪種顔色呢?green是正確的顔色,那麽爲什麽呢?
是因爲瀏覽器是根據權值來判斷使用哪種css樣式的,權值高的就使用哪種css樣式。
下面是權值的槼則:
標簽的權值爲1,類選擇符的權值爲10,ID選擇符的權值最高爲100。
例如下面的代碼:
p{color:red;} /*權值爲1*/ p span{color:green;} /*權值爲1+1=2*/ .warning{color:white;} /*權值爲10*/ p span.warning{color:purple;} /*權值爲1+1+10=12*/ #footer .note p{color:yellow;} /*權值爲100+10+1=111*/
注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解爲繼承的權值最低。
9-4 選擇器最高層級!important
我們在做網頁代碼的時,有些特殊的情況需要爲某些樣式設置具有最高權值,怎麽辦?
這時候我們可以使用!important來解決。
如下代碼:
p{color:red!important;} p{color:green;} <p>三年級時,我還是一個<span>膽小如鼠</span>的小女孩。</p>
這時 p 段落中的文本會顯示的red紅色。
注意:!important要寫在分號的前面
這裡注意當網頁制作者不設置css樣式時,瀏覽器會按照自己的一套樣式來顯示網頁。並且用戶也可以在瀏覽器中設置自己習慣的樣式,比如有的用戶習慣把字號設置爲大一些,使其查看網頁的文本更加清楚。這時注意樣式優先級爲:瀏覽器默認的樣式 < 網頁制作者樣式 < 用戶自己設置的樣式,但記住!important優先級樣式是個例外,權值高於用戶自己設置的樣式。