1. 程式人生 > >CSS之選擇器及其優先順序

CSS之選擇器及其優先順序

        在單純使用HTML的過程中,設定網頁每個標籤元素的樣式會很麻煩,對於每個標籤都要進行樣式設定的話,那麼無疑程式碼量會十分龐大,尤其有很多標籤的樣式是相同的,程式碼過多的重複,冗餘,使得html的程式碼可讀性不高。因此,如果有一種方法能將一些表示樣式的程式碼抽離出來,那麼就可以解決HTML程式碼對樣式的重複定義,提高了後期樣式的可維護性。而CSS就是完美的html樣式的拯救者,CSS就是指層疊樣式表,用來定義網頁的顯示效果,用它來定義html程式碼中的樣式,那麼無疑可以使得html語言更加簡潔,並且維護性更高,因此,CSS將網頁內容與顯示樣式進行解耦分離,不僅提高了顯示功能,而且提高了可維護性。本文主要講解CSS中的幾種選擇器。

1.標籤選擇器

        標籤選擇器的格式一般是:標籤名{屬性1:屬性值1;.......屬性n:屬性值n;}。以下通過一個例項來看標籤選擇器的效果。

<html>
 <head>
  <style type="text/css">

	div {
		background-color: red;
	}

	p {
		background-color: green;
	}
  </style>
 </head>
 <body>

<div>這是標籤選擇器,div當使用div標籤選擇器</div>

<p>p選擇器應當選擇p標籤選擇器</p>
<h1>沒有h1選擇器,那麼h1就用預設的</h1>

 </body>
</html>

得到網頁如下:


        以上定義了一個div標籤的選擇器和一個p標籤的選擇器,那麼使用相應的標籤時,便會自動呼叫相應的選擇器。以上並沒有定義h1相應的選擇器,所以h1標籤使用時所有配置是預設的。

2.分組選擇器

        何為分組選擇器,就是一些配置相同的標籤選擇器,可以將其組合,避免重複程式碼。具體實現如下:

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">
	div,p {
		font-family:Serif;
		font-size:80px;
		background-color: green;
	}
  </style>
 </head>
 <body>

<div>使用了組合選擇器的div選擇器</div>

<p>使用了組合選擇器的p選擇器</p>

 </body>
</html>

檢視效果:


        可以看出使用上述組合選擇器,便可以節省不少程式碼。

3.派生選擇器

        其實這個選擇在程式碼上看起來與分組選擇器十分相似,僅有無逗號之分,但是意義上卻大有不同。

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">
	div em {
		font-family:Serif;
		font-size:80px;
		background-color: green;
	}
  </style>
 </head>
 <body>

<div>使用了派生<em>選擇器</em></div>

<em>這是em的內容</em>

 </body>
</html>

檢視效果:


        以上示例可以看出,前者表示父標籤,後者表示子標籤,派生選擇器只對最小標籤才有效果,比如上面的 div em中div表示父標籤,而em表示子標籤,只有兩者一起使用時選擇器才有效果,並且有效果的內容是em修飾的內容。允許div中有多個em標籤,並且效果一致。

4.id選擇器

        所謂id選擇器,相當於將選擇器包裝成一個id,如果之後有標籤需要呼叫它,只需要在id屬性值寫成需要呼叫的選擇器的名稱即可。id選擇器名用“#”修飾。

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">
	#att {
		font-family:Serif;
		font-size:80px;
		background-color: green;
	}
  </style>
 </head>
 <body>

<div id="att">使用了id<em>選擇器</em><em>!!</em></div>

<em id="att">這是em呼叫了id選擇器</em>

 </body>
</html>

檢視效果:

        

        因此id選擇器如果被呼叫的話,只需要id屬性賦予相應的選擇器名稱即可。

5.類選擇器

        類選擇器的用法與id選擇器的用法差不多,將屬性包裝成一個類,如果有標籤需要呼叫該類選擇器,只需要將class屬性填寫成相應的值即可。注意類選擇器需要用"."在名稱前修飾。

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">
	.att {
		font-family:Serif;
		font-size:80px;
		background-color: green;
	}
  </style>
 </head>
 <body>

<div class="att">使用了類<em>選擇器</em><em>!!</em></div>

<em class="att">這是em呼叫了類選擇器</em>

 </body>
</html>

檢視效果:


6.屬性選擇器

        屬性選擇器就是通過修飾屬性,如果出現了該屬性則自動呼叫該選擇器,[value]的形式,其中value是屬性名;如果出現[value1][value2]則說明需要同時出現這兩個屬性的標籤才能呼叫該選擇器;如果出現a[value],則說明只能在a標籤擁有value屬性時,才能呼叫該選擇器。

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">
	[color] {
		font-family:Serif;
		font-size:20px;
		background-color: green;
	}
	[color][name] {
		font-family:Serif;
		font-size:40px;
		background-color: green;
	}
	a[href] {
		font-family:Serif;
		font-size:60px;
		background-color: green;
	}
  </style>
 </head>
 <body>

<div color="red">使用了標籤<em>選擇器</em><em>!!</em></div>
<p name="p1" color="red">看我有什麼效果</p>
<a href="www.baidu.com">百度</a>

 </body>
</html>

檢視效果:


7.style屬性

        還有一種特定的選擇器,就是使用標籤的style屬性。

<html>
 <head>
 
 </head>
 <body>

<div style="font-family:Serif;font-size:20px;background-color: green;">這是style屬性</div>

 </body>
</html>

檢視效果:


        可以看出style屬性會導致標籤裡面的程式碼量過多。所以當style內容比較多的時候還是建議使用前面的選擇器。

8.優先順序

        以下根據一段程式碼來區分各選擇器的優先順序。

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">

		[color]{
			background-color: pink;
		}
  		#hehe1 {
			background-color: orange;
		}

		.haha1 {
			background-color: green;
		}

		div {
			background-color: red;
		}


  </style>
 </head>
 <body>

<div color="white" class="haha1" id="hehe1" style="background-color: gray;">誰的優先順序最高</div>
<div color="white" class="haha1" id="hehe1" >誰的優先順序第二</div>
<div color="white" class="haha1">誰的優先順序第三</div>
<div color="white" >誰的優先順序第四</div>
<div >誰的優先順序第五</div>
 </body>
</html>

顯示效果為:


        根據以上結果可以看出,style屬性>id選擇器>類選擇器>屬性選擇器>標籤選擇器。