CSS的某些樣式是具備繼承性的,那麼什麼是繼承呢?繼承是一種規則,它容許樣式不只應用於某個特定html標籤元素,並且應用於其後代。好比下面代碼:如某種顏色應用於p標籤,這個顏色設置不只應用p標籤,還應用於p標籤中的全部子元素文本,這裏子元素爲span標籤。css
p{color:red;} <p>三年級時,我仍是一個<span>膽小如鼠</span>的小女孩。</p>
但注意有一些css樣式是不具備繼承性的。如border:1px solid red;html
p{border:1px solid red;} <p>三年級時,我仍是一個<span>膽小如鼠</span>的小女孩。</p>
在上面例子中它代碼的做用只是給p標籤設置了邊框爲1像素、紅色、實心邊框線,而對於子元素span是沒用起到做用的。瀏覽器
有的時候咱們爲同一個元素設置了不一樣的CSS樣式代碼,那麼元素會啓用哪個CSS樣式呢?咱們來看一下面的代碼:spa
p{color:red;} .first{color:green;} <p class="first">三年級時,我仍是一個<span>膽小如鼠</span>的小女孩。</p>
p和.first都匹配到了p這個標籤上,那麼會顯示哪一種顏色呢?green是正確的顏色,那麼爲何呢?是由於瀏覽器是根據權值來判斷使用哪一種css樣式的,權值高的就使用哪一種css樣式。code
下面是權值的規則:htm
標籤的權值爲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,因此能夠理解爲繼承的權值最低。it
就近原則,越近優先級越高class
咱們來思考一個問題:若是在html文件中對於同一個元素能夠有多個css樣式存在而且這多個css樣式具備相同權重值怎麼辦?好,這一小節中的層疊幫你解決這個問題。import
層疊就是在html文件中對於同一個元素能夠有多個css樣式存在,當有相同權重的樣式存在時,會根據這些css樣式的先後順序來決定,處於最後面的css樣式會被應用。
以下面代碼:
p{color:red;} p{color:green;} <p class="first">三年級時,我仍是一個<span>膽小如鼠</span>的小女孩。</p>
最後 p 中的文本會設置爲green,這個層疊很好理解,理解爲後面的樣式會覆蓋前面的樣式。
因此css樣式優先級就不難理解了:
內聯樣式表(標籤內部)> 嵌入樣式表(當前文件中)> 外部樣式表(外部文件中)。
咱們在作網頁代碼的時,有些特殊的狀況須要爲某些樣式設置具備最高權值,怎麼辦?這時候咱們能夠使用!important來解決。
以下代碼:
p{color:red!important;} p{color:green;} <p class="first">三年級時,我仍是一個<span>膽小如鼠</span>的小女孩。</p>
這時 p 段落中的文本會顯示的red紅色。
注意:!important要寫在分號的前面
這裏注意當網頁製做者不設置css樣式時,瀏覽器會按照本身的一套樣式來顯示網頁。而且用戶也能夠在瀏覽器中設置本身習慣的樣式,好比有的用戶習慣把字號設置爲大一些,使其查看網頁的文本更加清楚。這時注意樣式優先級爲:瀏覽器默認的樣式 < 網頁製做者樣式 < 用戶本身設置的樣式,但記住!important優先級樣式是個例外,權值高於用戶本身設置的樣式。