天天看點

CSS個人筆記 選擇器CSS個人筆記

CSS個人筆記

選擇器

标簽選擇器

标簽選擇器又叫元素選擇器,換句話說,文檔的元素就是最基本的選擇器,使用元素名稱直接選中元素即可。

例如

<style>
	p{
		height:100px;
		border:1px solid red;
	}
	
</style>

<p>one</p>
<p>two</p>
<p>three</p>
           

類選擇器( Class selectors )

類選擇器以點"."開頭,後面緊跟一個類名。類名不允許有空格,與元素中class屬性的值保持一緻。一個元素可以有多個class的值,每個值通過空格分割開。類名相同的元素屬于一類元素。

例如:

<style>	 		
		.first{font-weight: bold;}		 	
		.done {text-decoration: line-through;}	 	
	</style>
	<ul>		
		<li class="first done">Create an HTML document</li>
		<li class="second done">Create a CSS style sheet</li>
		<li class="third done">Link them all together</li>		
	</ul>


           

ID選擇器(ID selectors)

ID選擇器以"#"開頭,後面緊跟一個ID名,在一個文檔中,ID值不能重複,是以在選擇文檔中唯一進制素的時候該選擇器比較有用。

例如:

<style>			
		#polite {	  font-family: cursive;}			
		#rude {	font-family: monospace;text-transform: uppercase;}
	</style>
	
	<p id="polite"> — "Good morning."</p>		
	<p id="rude"> — "Go away!"</p>

           

普遍選擇器(Universal selector)

使用"*”來表示普遍選擇器,表示選擇所有元素,通常用在組合選擇器中。

例如:

<style>			
		.left-nav>* { width:200px; background-color:#fafafa}
	</style>
	
	<article class="left-nav">
		<span></span>
		<dl>				
		    <dt>推薦</dt>				
		    <dd class="current"><i class="icon-music"></i>發現音樂</dd>		</dl>			
		<dl>				
		    <dt>我的音樂</dt>							    <dd><i class="icon-cloud-download"></i>下載下傳的音</dd>			</dl>
	</article>

           

層次選擇器

  • 後代選擇器( descendant selector ) 使用 “ ” 隔開兩個選擇器。

    例如 “ul li”表示選擇ul的後代元素li,li可以為ul的直接子元素,也可以為ul的孫子元素。

  • 子代選擇器(child selector) 使用 “>” 隔開兩個選擇器。

    例如 “ul>li”表示選擇ul的直接子代元素li,ul的孫子元素li無法被選擇到。

  • 相鄰同胞選擇器(adjacent sibling selector) 下一個兄弟元素 使用 “+” 隔開兩個選擇器。

    例如 ".one+*"表示選擇class為"one"元素的下一個兄弟元素。

  • 一般同胞選擇器( general sibling selector) 之後所有的兄弟元素 使用 “~” 隔開兩個選擇器。

    例如 ".one~*"表示選擇class為"one"元素之後的所有兄弟元素。

多選擇器

  • 組合選擇器 多個選擇器組合使用,使用“,”分割。

    例如 “div,.one,#tt”

    表示選擇div元素,class為one的元素以及id為tt的元素

  • 嵌套選擇器 多個選擇器嵌套使用。

    例如 “div.one” 表示class為one的div元素。

屬性選擇器

  • [attr] 選擇具有attr屬性的元素、無論該屬性的值是什麼
  • [attr=val] 選擇具有attr屬性的、并且attr的值為val元素
  • [attr^=val] 選擇具有attr屬性的、并且attr的值以val開頭的元素
  • [attr$=val] 選擇具有attr屬性的、并且attr的值以val結尾的元素
  • [attr*=val] 選擇具有attr屬性的、并且attr的值包含val的元素
  • [attr~=val] 選擇具有attr屬性的、并且attr的值之一為val的元素

僞類選擇器

僞類以":"開頭,用在選擇器後,用于指明元素在某種特殊的狀态下才能被選中。

子代元素相關的僞類選擇器

  • :only-child 選中獨生子元素
  • :first-child 選中作為别人第一個孩子的元素
  • :last-child 選中作為别人最後一個孩子的元素
  • :nth-child(n) 選中作為别人第幾個孩子元素的元素
  • :nth-last-child(n) 選中作為别人倒數第幾個孩子的元素
  • :first-of-type 選中作為别人每種類型中的第一個孩子的元素
  • :last-of-type 選中作為别人每種類型中的最後一個孩子的元素
  • :nth-of-type(n) 選中作為别人每種類型中的第幾個孩子的元素
  • :nth-last-of-type(n) 選中作為别人每種類型中的倒數第幾個孩子的元素
  • 上面的n可以為元素的序号,也可以為特殊的字元,比如odd,even,n從1開始

元素狀态相關僞類選擇器

  • :link 未被通路的狀态,a标簽
  • :visited 已通路過的狀态,a标簽
  • :hover 滑鼠懸停的狀态,a标簽,其他标簽也可用
  • :active 活動的狀态, a标簽,其他标簽也可用
  • :focus 聚焦的狀态
  • :checked 使用者選中的單選按鈕和複選按鈕
  • :default 預設選中的單選按鈕和複選按鈕
  • :enabled、 :disabled 可用的表單控件、禁用的表單控件
  • :valid 、:invalid 通過驗證的、不通過驗證的
  • :required、:optional 必填的和選填的
  • :in-range 、:out-of-range 在範圍内的、在範圍外的

僞元素選擇器

僞元素以"::"開頭,用在選擇器後,用于選擇指定的元素。
           
  • ::after 選中之後的不存在的節點,可配合content屬性進行内容填充
  • ::before 選中之前的不存在的節點,可配合content屬性進行内容填充
  • ::first-letter 選中第一個文本字元
  • ::first-line 選中第一行文本
  • ::selection 選中使用者在選擇的時候的文本

級聯(The cascade)

從表層來看,級聯表明CSS規則的順序問題,但是級聯遠比這個複雜,在所有的選擇器中某個選擇器定義的規則是否能夠勝出(即優先級)取決于三個元素:Importance,Specificity,Source order

!important聲明(Importance)

在css規則的值末尾添加"!important"能夠保證該規則優先其他規則。但是一般建議不使用"!important",因為它會改變級聯的工作方式,使得調試變得困難。

<style>
		#winning {background-color: red; border: 1px solid black;}
		.better {	 background-color: gray; border: none !important;}
	</style>
	<p class="better">This is a paragraph.</p>		
	<p class="better" id="winning">One selector to rule them all!</p>

           

特性值 (Specificity)

1000

如果聲明是在style 屬性中該列加1分(這樣的聲明沒有選擇器,是以它們的專用性總是1000。)否則為0。

100

在整個選擇器中每包含一個ID選擇器就在該列中加1分。

10

在整個選擇器中每包含一個類選擇器、屬性選擇器、或者僞類就在該列中加1分。

1

在整個選擇器中每包含一個元素選擇器或僞元素就在該列中加1分。

其他不加分

代碼順序 (Source order)

如果多個競争選擇器具有相同的重要性和特性值,代碼順序就發揮作用了,後來規則優先前面規則。

采取就近原則。

繼承(Inheritance)

CSS中有些規則将會預設被子元素繼承,有些則不會。

可繼承屬性:font系列屬性、文本系列屬性、清單系列屬性、cursor、visibility等

不可繼承屬性:margin、padding、border等

CSS提供了三個特殊的值用來處理繼承

  • inherit 繼承父元素的樣式
  • initial 不繼承。應用浏覽器的預設樣式
  • unset 不設定,表現該規則本來特性,即如果該規則具有繼承屬性則繼承,否則不繼承。

繼續閱讀