1. 程式人生 > >CSS學習日記02——有關選擇器

CSS學習日記02——有關選擇器

選擇器 :

 選擇器(selector)會告訴瀏覽器:網頁 上的哪些元素需要設定什麼樣的樣式。比如:p這個選擇器就表示選擇頁面中的所 有的p元素,在選擇器之後所設定的樣式會 應用到所有的p元素上。

 元素選擇器

(標籤選擇器),可以根據標 籤的名字來從頁面中選取指定的元素。

 語法: 標籤名 { }

比如p則會選中頁面中的所有p標籤,h1會 選中頁面中的所有h1標籤。

類選擇器

類選擇器,可以根據元素的class屬性值選 取元素。

語法:.className { }

 比如.hello會選中頁面所有class屬性為 hello的元素。 

ID選擇器 

ID選擇器,可以根據元素的id屬性值選取 元素。 

語法: #id { }

比如#box會選中頁面中id屬性值為box的 元素,和class屬性不同,id屬性是不能重 復的。

複合選擇器

複合選擇器,可以同時使用多個選擇器, 這樣可以選擇同時滿足多個選擇器的元素。

語法:  選擇器1選擇器2{} 

例如 div.box1會選中頁面中具有box1這個 class的div元素。(不能留空隙)

(可以理解為交集)

群組選擇器

群組選擇器,可以同時使用多個選擇器, 多個選擇器將被同時應用指定的樣式。

語法:選擇器1,選擇器2,選擇器3 { }

比如p,.hello,#box會同時選中頁面中p元素,class為hello的元素,id為box的元素。

(可以理解為並集)

通用選擇器

通用選擇器,可以同時選中頁面中的所有元素。 

語法: *{ }

標籤之間的關係 

祖先元素

直接或間接包含後代元素的元素。

後代元素

直接或間接被祖先元素包含的元素。

後代選擇器 :

後代選擇器可以根據標籤的關係,為處在 元素內部的代元素設定樣式。

語法:祖先元素 後代元素 後代元素 { }

 比如p strong 會選中頁面中所有的p元素 內的strong元素。 (有空隙)

父元素 

直接包含子元素的元素。 

子元素 

直接被父元素包含的元素。 

子元素選擇器 :

子元素選擇器可以給另一個元素的子元素 設定樣式。

語法:父元素 > 子元素{}

比如body > h1{}將選擇body子標籤中的所 有h1標籤。

其他子元素選擇器

:first-child – 選擇第一個子標籤 

:last-child – 選擇最後一個子標籤

:nth-child – 選擇指定位置的子元素

:first-of-type

:last-of-type

:nth-of-type – 選擇指定型別的子元素

兄弟元素

擁有相同父元素的元素。

兄弟選擇器 :

除了根據祖先父子關係,還可以根據兄弟 關係查詢元素。

語法: – 查詢後邊一個兄弟元素 :兄弟元素 + 兄弟元素{}

         – 查詢後邊所有的兄弟元素 :兄弟元素 ~ 兄弟元素{}

偽類和偽元素

有時候,需要選擇本身沒有標籤,但是 仍然易於識別的網頁部位,比如段落首行或滑鼠滑過的連線。CSS為他們提供一些選擇器:偽類和偽元素。

給連結定義樣式 :

有四個偽類可以讓你根據訪問者與該連結的交 互方式,將連結設定成4種不同的狀態。

正常連結 – a:link

訪問過的連結 – a:visited(只能定義字型顏色)

滑鼠滑過的連結 – a:hover

正在點選的連結 – a:active

否定偽類 :

否定偽類可以幫助我們選擇不是其他東西 的某件東西。

語法: :not(選擇器){}

比如p:not(.hello)表示選擇所有的p元素但 是class為hello的除外。

其他 :

獲取焦點 – :focus

指定元素前 – :before

指定元素後 – :after

選中的元素 – ::selection

繼承

就像父親的財產會遺傳給兒子一樣,在CSS中祖先元素的樣式 同樣也會被子元素繼承。繼承是指應用在一個標籤上的那些CSS樣式會同時被應用到其內嵌標籤上。 比如為父元素設定了字型顏色,子元素也會應用上相同的顏色。繼承來的樣式沒有優先順序。但是並不是所有的樣式都會繼承,比如:背景相關的,邊框相關的,定位相關的。具體要看參考文件。

權重的計算

當樣式發生衝突時,需要將相關的選擇器優先順序進行求和計算,優先順序高的優先顯示,如果優先順序一樣,則顯示靠後的樣式

不同的選擇器有不同的權重值:

 – 內聯樣式:權重是1000

– id選擇器:權重是100

– 類、屬性、偽類選擇器:權重是10

– 元素選擇器:權重是1

– 萬用字元:權重是0

 計算權重需要將一個樣式的全部選擇器相加,比如 body h1的權重是20,h1的權重是10。優先順序計算時,總大小不能超過他的最大的數量級。

(可以在樣式後邊新增一個!important,如果樣式中添加了該內容,則該樣式將會獲取最大的優先順序,將會優先於所有的樣式顯示,包括內聯樣式,但是這個屬性要慎用。)