Bootstrap的優先級、選擇器、偽類


概述:Bootstrap的CSS組件的核心就是選擇器的定義以及在各自優先級上的處理。由於大部分的選擇器都非常的常見就一筆帶過了,這里重點介紹一下Bootstrap用到的知識點。

一、優先級

之前我們使用CSS的時候知道樣式有三種,分別是行內樣式、內嵌樣式、外部樣式,它們的優先級是 行內>內嵌>外部。

OK,現在我們將Bootstarp的優先級,如何確定CSS的優先級?這里我們要先引入一個機制,分別用4個數字(a,b,c,d)表示優先級組合,

比如1,1,1,1和0,1,0,1。它們的意思分別是:

  1. 第一個數字(a)表示style屬性,優先級最高。由於一般都是class樣式,所以該值一般都是0。
  2. 第二個數字(b)表示該css選擇器上的id數量的總和,一般都是1個。
  3. 第三個數字(c)是用在改css選擇器上的其他屬性css選擇器以及偽類的總和。這個里包括class(.btn)和屬性css選擇器(比如li[id=red])。
  4. 第四個數字(d)計算元素(就像table、p、div等)和偽元素(就像first-child等)。
  5. 通用css選擇器(*)是0優先級。
  6. 如果兩個CSS選擇器有同樣的優先級,在樣式表中后面的那個起作用。

下面有幾個例子和對應的優先級,看表說話:

表1-1 選擇器和所對應的優先級
選擇器 優先級   
#menu h2 0,1,01
h2.titile 0,0,1,1
h2+p 0,0,0,2

 

 

 

 

 

同理,計算下面兩個選擇器的優先級:

#leftbar li#first { color:red}

#leftbar li:first-child{ color:blue}

結果肯定是第1個比第2個優先級高,因為第1個優先級是0,2,0,1,而第2個是0,1,0,2。

二、選擇器

每一條CSS樣式的定義都有兩部分組成,形式如下:選擇器{樣式}。在{}之前的部分就是"選擇器"。"選擇器"指明了應用這些"樣式"的網頁元素。

  1. 屬性選擇器

    Bootstarp的CSS組件里使用了很多屬性選擇器,比如[data-toggle^=button]、[data-toggle=toggle]等。屬性選擇器有多種用法,下面列出了這些用法的區別:

表1-2 常見屬性選擇器用法
            選擇器          用法
[att=value] 該屬性有指定的確切值
[att~=value] 該屬性值必須是多個用空格隔開的值,比如,class="title featured home",而且這些值中的一個必須是指定的值"value"
[att|=value]  屬性的值就是"value"或則以"value"開始並立即跟上一個"-"字符,也就是"value-",比如lang="zh-cn"
[att^=value] 該屬性的值必須以指定的值開始
[att$=value] 該屬性的值必須以特定值結束
[att*=value] 該屬性的值必須包含特定值(而無論其位置怎么樣)

 

 

 

 

 

 

 

 

  

  2.子選擇器

     CSS里的子元素用符號">"表示。如下實例是表示擁有table樣式的表格,其thead元素內的tr元素如果有th的話,則應用該樣式

.table > thead > tr > th {
  vertical-align:bottom;
  border-bottom:2px solid #dddddd;
}

  3.兄弟選擇器

    兄弟元素分為兩種,一種是臨近兄弟,一種是普通兄弟。臨近兄弟的選擇符用"+" 表示。比如導航條里要設置兩個li之間的外邊距,則需要如下定義:

.nav-pills > li + li {
  margin-left:2px;  /*加大左外邊距*/
}

    如果只想查找某一個指定元素后面的兄弟節點(而不限制於臨近節點),可以使用普通兄弟節點的符號"~"。比如:

.article h1 ~ p {
  font-size:13px;  
}

三、偽類

  CSS提供了非常多的可用偽類,但是Bootstrap只用了常用的幾個,這里我們只簡單列一下常用的偽類和其對應的意思,具體看表說話:

表1-3 CSS3中常見偽類
屬性 描述
:hover 鼠標滑過時的狀態
:focus 元素擁有焦點時的狀態
:first-child 指定某一個元素的第一個子元素
:last-child 指定某一個元素的最后一個子元素
:nth-child() 指定某個元素的一個或多個特定的子元素,可以傳入數字,也可以傳入even(偶數)或odd(奇數)

 

 

 

 

 

 

 

 

 

  

舉個例子,按鈕組里,除第一個按鈕、最后一個按鈕和帶有dropdown-toggle樣式的元素外,其他btn樣式的按鈕都不能設置圓角。使用如下代碼:

.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
  border-radius:0;  
}

注意:多個偽類可以一起使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM