1 CSS概述
1.1 CSS的定義
全名:Cascading Style Sheets -> 層疊樣式表
定義:CSS成為層疊樣式表,它主要用於設置HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距等)以及版面的布局等外觀顯示樣式。
CSS以HTML為基礎,提供了豐富的功能(如字體、顏色、背景的控制以及整體排版等等),還可以針對不同的瀏覽器設置不同的樣式。
(1) 層疊的概念
CSS—層疊樣式表,層疊就是瀏覽器對多個樣式來源進行疊加,最終確定結果的過程。
上圖中有兩個樣式來源,第一個是引用的css1.css,第二個是自己在style中編寫的樣式。
“層疊”是個疊加的過程,可通過下圖表示:
層疊是CSS的核心機制,理解了它才能以最經濟的方式寫出最容易改動的CSS,讓文檔外觀在達到設計要求的同時,也給用戶留下一些空間,讓他們根據需要更改文檔的顯示效果,例如調整字號。
(2) 層疊的規則
由於樣式的來源不同,瀏覽器在加載樣式時,需要計算出最終的樣式值,這樣才能顯示出正確的界面效果——瀏覽器會通過疊加和覆蓋這兩種方式來生成最終的樣式值。
如上圖,不同來源的兩個樣式,第一個樣式設置了font-weight,第二個沒有,瀏覽器會把它疊加在一起,即瀏覽器會把各個零散的整合成一個整體。
第一個樣式color:red,第二個樣式color:blue,瀏覽器會讓后者覆蓋前者,最終結果還是color:blue。
覆蓋的默認規則是后者覆蓋前者,但是又一個特殊情況——!important。
如上圖。雖然color:blue是后來者,但是它沒有居上,因為前者color:red跟着!important。
這就像得到一個尚方寶劍,有最高執行權,其他人統統讓路,否則佛擋殺佛。
1.2 HTML、CSS與JS三者的關系
HTML:頁面結構,負責從語義的角度搭建頁面結構。
CSS:頁面樣式表現,負責從審美的角度美化頁面。
JavaScript:交互行為,負責從交互的角度提升用戶體驗。
HTML+CSS是為了實現Web標准的樣式和結構分離
1.3 CSS調用類型
(樣式的來源)
(1) 缺省樣式:瀏覽器樣式
所有的標簽在不同的瀏覽器中都有各自默認的樣式,如h1,h2,p,div,span,ul等,可以通過設置修改瀏覽器的樣式。
瀏覽器自帶一個默認的樣式,如果html中沒有為標簽設置樣式,則瀏覽器會按照自己的樣式來顯示。
但是瀏覽器默認樣式的級別是最低的,一旦有其他地方設置了標簽樣式,瀏覽器默認樣式就會被沖掉。
注:不同瀏覽器的默認樣式有些地方是不一樣的。
默認樣式代碼

html, address,blockquote,body, dd, div,dl, dt, fieldset, form,frame, frameset,h1, h2, h3, h4,h5, h6, noframes,ol, p, ul, center,dir, hr, menu, pre { display: block }/*以上列表元素默認狀態下一塊狀顯示,未顯示的將以內聯元素顯示,該列表針對HTML4版本,部分元素在XHTML1中將廢棄*/
li { display: list-item }/*默認以列表顯示*/
head { display: none }/*默認不顯示*/
table { display: table }/*默認為表格顯示*/
tr { display: table-row }/*默認為表格行顯示*/
thead { display: table-header-group }/*默認為表格頭部分組顯示*/
tbody { display: table-row-group }/*默認為表格行分組顯示*/
tfoot { display: table-footer-group }/*默認為表格底部分組顯示*/
col { display: table-column }/*默認為表格列顯示*/
colgroup { display: table-column-group }/*默認為表格列分組顯示*/
td, th { display: table-cell; }/*默認為單元格顯示*/
caption { display: table-caption }/*默認為表格標題顯示*/
th { font-weight: bolder; text-align: center }/*默認為表格標題顯示,呈現加粗居中狀態*/
caption { text-align: center }/*默認為表格標題顯示,呈現居中狀態*/
body { margin: 8px; line-height: 1.12 }
h1 { font-size: 2em; margin: .67em 0 }
h2 { font-size: 1.5em; margin: .75em 0 }
h3 { font-size: 1.17em; margin: .83em 0 }
h4, p, blockquote, ul, fieldset, form, ol, dl, dir, menu { margin: 1.12em 0 }
h5 { font-size: .83em; margin: 1.5em 0 }
h6 { font-size: .75em; margin: 1.67em 0 }
h1, h2, h3, h4, h5, h6, b,strong { font-weight: bolder }
blockquote { margin-left: 40px; margin-right: 40px }
i, cite, em,var, address { font-style: italic }
pre, tt, code, kbd, samp { font-family: monospace }
pre { white-space: pre }
button, textarea, input, object, select { display:inline-block; }
big { font-size: 1.17em }
small, sub, sup { font-size: .83em }
sub { vertical-align: sub }/*定義sub元素默認為下標顯示*/
sup { vertical-align: super }/*定義sub元素默認為上標顯示*/
table { border-spacing: 2px; }
thead, tbody, tfoot { vertical-align: middle }/*定義表頭、主體表、表腳元素默認為垂直對齊*/
td, th { vertical-align: inherit }/*定義單元格、列標題默認為垂直對齊默認為繼承*/
s, strike, del { text-decoration: line-through }/*定義這些元素默認為刪除線顯示*/
hr { border: 1px inset }/*定義分割線默認為1px寬的3D凹邊效果*/
ol, ul, dir, menu, dd { margin-left: 40px }
ol { list-style-type: decimal }
ol ul, ul ol, ul ul, ol ol { margin-top: 0; margin-bottom: 0 }
u, ins { text-decoration: underline }
br:before { content: "A" }/*定義換行元素的偽對象內容樣式*/
:before, :after { white-space: pre-line }/*定義偽對象空格字符的默認樣式*/
center { text-align: center }
abbr, acronym { font-variant: small-caps; letter-spacing: 0.1em }
:link, :visited { text-decoration: underline }
:focus { outline: thin dotted invert }
/* Begin bidirectionality settings (do not change) */
BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override }/*定義BDO元素當其屬性為DIR="ltr"時的默認文本讀寫顯示順序*/
BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override }/*定義BDO元素當其屬性為DIR="rtl"時的默認文本讀寫顯示順序*/
*[DIR="ltr"] { direction: ltr; unicode-bidi: embed }/*定義任何元素當其屬性為DIR="ltr"時的默認文本讀寫顯示順序*/
*[DIR="rtl"] { direction: rtl; unicode-bidi: embed }/*定義任何元素當其屬性為DIR="rtl"時的默認文本讀寫顯示順序*/
@media print { /*定義標題和列表默認的打印樣式*/
h1 { page-break-before: always }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid }
ul, ol, dl { page-break-before: avoid }
}
瀏覽器默認樣式
(2) 內聯樣式:行間式,在標簽的style屬性中設定CSS樣式。 通常用於特殊場合的特殊元素。 <p style="color:red">This is tag of paragraph</p> (3) 內部樣式:嵌入式,把CSS樣式代碼集中寫在<head>標簽的<style></style>內部。 通常用於單個page特有的樣式。 <head> ... <style type="text/css"> ...此處寫CSS樣式 </style> </head> (4) 外部樣式:鏈接式,將一個獨立的.css文件引入到HTML文件中,使用<link>標記寫在<head></head>標記中。 樣式代碼存放在獨立的.css文件中。 通常用於多個page頁面共享樣式,如:論壇帖子的排版。 <head> ... <link href="My.css" rel="stylesheet" type="text/css"> </head> (5) 導入樣式:@import -> 不推薦使用的方式,會導致css不能並行下載,並且要求導入樣式的書寫必須在所有的css規則書寫之前。 <style type="text/css"> /*將某一個css文件的樣式直接導入到當前位置*/ @import url(css/main.css); p { color:green; /*設置字體顏色*/ background-color:silver; } </style> 注意: 導入式會在整個網頁裝載完后再裝載CSS文件,因此這就導致了一個問題,如果網頁比較大則會兒出現先顯示無樣式的頁面,閃爍一下之后,再出現網頁的樣式。這是導入式固有的一個缺陷。 使用鏈接式時與導入式不同的是它會以網頁文件主體裝載前裝載CSS文件,因此顯示出來的網頁從一開始就是帶樣式的效果的,它不會象導入式那樣先顯示無樣式的網頁,然后再顯示有樣式的網頁,這是鏈接式的優點。
2 CSS語法
2.1 CSS基礎語法
2.1 CSS基礎語法
(1) CSS規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。
selector {declaration1; declaration2; ... declarationN }
選擇器通常是您需要改變樣式的 HTML 元素。
每條聲明由一個屬性和一個值組成。
注:如果要定義不止一個聲明,則需要用分號將每個聲明分開。
p {
text-align: center;
color: black;
font-family: arial;
}
(2) 屬性
屬性(property)是您希望設置的樣式屬性(style attribute)。
每個屬性有一個值。屬性和值被冒號分開。
selector {property: value}
(3) 值
當值為顏色值時,有不同寫法:
p { color: #ff0000; }
p { color: #f00; }
p { color: rgb(255,0,0); }
p { color: rgb(100%,0%,0%);
當值為若干單詞,則要給值加引號:
p {font-family: "sans serif";}
2.2 CSS選擇器
(1) 通配符選擇器

(1) 通配符選擇器
通配符選擇器使用“*”號表示,能匹配頁面中所有的元素。
注: 通配符的穿透力很強,其優先級高於繼承的樣式,會覆蓋繼承的樣式,一般情況下都不會使用。
作用:選擇所有標簽
格式:
* {
屬性:值;
}
注意:
在企業開發中一般不會使用通配符選擇器。
理由是:由於通配符選擇器是設置界面上所有的標簽的屬性,
所以在設置之前會遍歷所有的標簽如果當前界面上的標簽比較多,那么性能就會比較差
例:
* {color: yellow}
(2) 標簽選擇器

(2) 標簽選擇器
又稱元素選擇器
最常見的 CSS 選擇器是元素選擇器,文檔的元素就是最基本的選擇器。
如果設置 HTML 的樣式,選擇器通常將是某個 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身:
作用:根據指定的標簽名稱,在當前界面中找到所有該名稱的標簽,然后設置屬性。
格式:
標簽名稱 {
屬性:值;
}
注意:
1、只要是HTML的標簽都能當做標簽選擇器
2、標簽選擇器選中的是當前界面中的所有標簽,而不能單獨選中某一標簽
3、標簽選擇器,無論嵌套多少層都能選中
例:
html {color:black;}
h1 {color:blue;}
h2 {color:silver;}
(3) 類選擇器

(3) 類選擇器
類選擇器允許以一種獨立於文檔元素的方式來指定樣式。該選擇器可以單獨使用,也可以與其他元素結合使用。
匹配所有class屬性中包含info的元素。
語法:.類名{樣式}(類名不能以數字開頭,類名要區分大小寫。)
.ClassName :.+Class類的名稱;類名是區分大小寫。
作用:根據指定的類名稱,在當前界面中找到對應的標簽,然后設置屬性
格式:
.類名稱 {
屬性:值;
}
注意:
1、類名就是專門用來給某個特定的標簽設置樣式的
2、每個標簽都可以設置一個或多個class(空格分隔),class就相當於人/標簽的名稱,因此同一界面內class可以重復
3、引用class一定要加點.
4、類名的命名規則與id的命名規則相同
例:
.Mycolor {color: yellow}
ID選擇器與class選擇器的區別:
相同的class屬性值,可以在HTML中出現多次,ID屬性值在頁面中則只能出現一次。
一個class的屬性可以有多個值,也就是說一個標簽可以有多個類。
示例

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>id選擇器</title> <style> .p1 { color: red; } .p2 { color: green; } .p3 { color: blue; } </style> </head> <body> <p class="p1">大多數人的帥,都是浮在表面的,是外表的帥</p> <p class="p2">而EGON,不僅具備外表帥,內心更是帥了一逼</p> <p class="p3">EGON就是我,我就是EGON</p> </body> </html> #練習 第一行與第三行的顏色都是紅色 第一行與第二行的字體大小都是50px 第二行與第三行內容有個下划線 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>id選擇器</title> <style> .p1 { color: red; } .p2 { font-size: 50px; } .p3 { text-decoration: underline; } </style> </head> <body> <p class="p1 p2">第一行內容</p> <p class="p2 p3">第二行內容</p> <p class="p1 p3">第三行內容</p> </body> </html> 示例
(4) ID選擇器

(4) ID選擇器
HTML標簽都有公共ID屬性,而且整個頁面唯一。
ID選擇器使用“#”號進行標識,后面緊跟ID名字。
語法:#ID名{樣式}(ID名不能以數字開頭)
作用:根據指定的id名稱,在當前界面中找到對應的唯一一個的標簽,然后設置屬性
格式:
id名稱 {
屬性:值;
}
注意:
1、在企業開發中如果僅僅只是為了設置樣式,通常不會使用id,在前端開發中id通常是留給js使用的
2、每個標簽都可以設置唯一一個id,id就相當於人/標簽的身份證,因此在同一界面內id絕不能重復
3、引用id一定要加#
4、id的命名只能由字符、數字、下划線組成,且不能以數字開頭,更不能是html關鍵字如p,a,img
備注: ID選擇器的優先級非常高,所以確定在整個頁面內唯一出現時,才開一使用,否則因為優先級問題在后續維護中不能很好進行修改和更新。
例:
#Mycolor {color: yellow}
ID選擇器命名規范:
-只允許出現字母(大小寫均可,嚴格區分)、下划線、數字。
-只允許以字母開頭。
-命名沒有長度限制,不過不建議過長。
-不允許出現標簽名。
(5) 多元素選擇器
多元素選擇器 同時匹配h3,h4標簽,之間用逗號分隔。 其右邊的樣式將應用到這兩個選擇器所引用的元素。逗號告訴瀏覽器,規則中包含兩個不同的選擇器。 例: h3,h4 {color: yellow;} <h3>Nick</h3> <h4>Jenny</h4>
(6) 復合選擇器
標簽指定式選擇器
標簽指定式選擇器有兩個選擇器構成,其中第一個為標記選擇器,第二個為class選擇器或id選擇器,兩個選擇器之間不能有空格,如:h3.special, p#one等等。
后代元素選擇器
后代選擇器用來選擇元素或元素組的后代,其寫法就是把外層標記寫在前面,內層標記寫在后面,中間用空格分隔。當標記發生嵌套時,內層標記就曾為外層標記的后代。
#1、作用:找到指定標簽的所有后代(兒子,孫子,重孫子、、、)標簽,設置屬性
#2、格式:
標簽名1 xxx {
屬性:值;
}
#3、注意:
1、后代選擇器必須用空格隔開
2、后代不僅僅是兒子,也包括孫子、重孫子
3、后代選擇器不僅僅可以使用標簽名稱,還可以使用其他選擇器比如id或class
4、后代選擇器可以通過空格一直延續下去
並集選擇器
並集選擇器是各個選擇器通過逗號連接而成的,任何形式的選擇器(包括標記選擇器、class累選擇器、id選擇器等等),都可以作為並集選擇器的一部分。
如果某些選擇器定義的樣式完全相同,或部分相同,就可以利用並集選擇器為它們定義相同的css樣式。
子元素選擇器
子元素選擇器是讓css選擇器只能選擇兒子輩的元素,例如:h1>strong { color : red; }
解讀為:選擇器 h1 > strong 可以理解為“選擇作為h1元素子元素的所有strong元素”,尖括號和選擇器之間可以有空格也可以沒有,沒有限制。
#1、作用:找到制定標簽的所有特定的直接子元素,然后設置屬性
#2、格式:
標簽名1>標簽名2 {
屬性:值;
}
先找到名稱叫做"標簽名稱1"的標簽,然后在這個標簽中查找所有直接子元素名稱叫做"標簽名稱2"的元素
#3、注意:
1、子元素選擇器之間需要用>符號鏈接,並且不能有空格
比如div >p會找div標簽的所有后代標簽,標簽名為">p"
2、子元素選擇器只會查找兒子,不會查找其他嵌套的標簽
3、子元素選擇器不僅可以用標簽名稱,還可以使用其他選擇器,比如id或class
4、子元素選擇器可以通過>符號一直延續下去
(7) 屬性選擇器

屬性選擇器 語法: 元素選擇器[屬性名稱="屬性值"] 說明 1) 可在其他選擇器上,再添加對屬性的匹配。 2) 若要元素同時滿足多個屬性,可在屬性選擇器后面進行追加:元素選擇器[屬性名稱1="屬性值"][屬性名稱2="屬性值"] 1. [title] & P[title] 設置所有具有title屬性的標簽元素; 設置所有具有title屬性的P標簽元素。 [title] { color: yellow; } p[title] { color: yellow; } <div title>Nick</div> <p title>Nick</p> 2. title=Nick] 設置所有title屬性等於“Nick”的標簽元素。 [title="Nick"] { color: yellow; } <p title="Nick">Nick</p> 3. [title~=Nick] 設置所有title屬性具有多個空格分隔的值、其中一個值等於“Nick”的標簽元素。 [title~="Nick"] { color: yellow; } <p title="Nick Jenny">Nick</p> <p title="Jenny Nick">Nick</p> 4. [title|=Nick] 設置所有title屬性具有多個連字號分隔(hyphen-separated)的值、其中一個值以"Nick"開頭的標簽元素。 例:lang屬性:"en"、"en-us"、"en-gb"等等 [title|="Nick"] { color: yellow; } <p title="Nick-Jenny">Nick</p> 5. [title^=Nick] 設置屬性值以指定值開頭的每個標簽元素。 [title^="Nick"] { color: yellow; } <p title="NickJenny">Nick</p> 6. title$=Nick] 設置屬性值以指定值結尾的每個標簽元素。 [title$="Nick"] { color: yellow; } <p title="JennyNick">Nick</p> 7. [title*=Nick] 設置屬性值中包含指定值的每個元素 [title*="Nick"] { color: yellow; } <p title="SNickJenny">Nick</p>
(8) 偽類選擇器
狀態是動態變化的,當一個元素到達一個特定狀態時,它可能得到一個樣式,當狀態改變時,又失去這個樣式。
它的功能和class有些類似,但它是基於文檔之外的抽象,所以叫偽類。
(1)CSS偽類
:link -> 該偽類將應用於未被訪問過的鏈接,IE6不兼容。一般不用此偽類,直接使用a標簽。
:hover -> 該偽類將應用於有鼠標指針懸停於其上的元素,在IE6只能應用於a標簽,IE7+所有元素都兼容。
:active -> 該偽類將應用於被激活的元素,例如被點擊的鏈接、被按下的按鈕登等。
:visited -> 該偽類將應用於已經被訪問過的鏈接。
:focus -> 該偽類將應用於擁有鍵盤輸入焦點的元素。

偽類選擇器: 專用於控制鏈接的顯示效果,偽類選擇器:
a:link(沒有接觸過的鏈接),用於定義了鏈接的常規狀態。
a:hover(鼠標放在鏈接上的狀態),用於產生視覺效果。
a:visited(訪問過的鏈接),用於閱讀文章,能清楚的判斷已經訪問過的鏈接。
a:active(在鏈接上按下鼠標時的狀態),用於表現鼠標按下時的鏈接狀態。
偽類選擇器 : 偽類指的是標簽的不同狀態:
a ==> 點過狀態 沒有點過的狀態 鼠標懸浮狀態 激活狀態
a:link {color: #FF0000} /* 未訪問的鏈接 */
a:visited {color: #00FF00} /* 已訪問的鏈接 */
a:hover {color: #FF00FF} /* 鼠標移動到鏈接上 */
a:active {color: #0000FF} /* 選定的鏈接 */ 格式: 標簽:偽類名稱{ css代碼; }
#1、作用:常用的幾種偽類選擇器。
#1.1 沒有訪問的超鏈接a標簽樣式:
a:link {
color: blue;
}
#1.2 訪問過的超鏈接a標簽樣式:
a:visited {
color: gray;
}
#1.3 鼠標懸浮在元素上應用樣式:
a:hover {
background-color: #eee;
}
#1.4 鼠標點擊瞬間的樣式:
a:active {
color: green;
}
#1.5 input輸入框獲取焦點時樣式:
input:focus {
outline: none;
background-color: #eee;
}
#2 注意:
1 a標簽的偽類選擇器可以單獨出現,也可以一起出現
2 a標簽的偽類選擇器如果一起出現,有嚴格的順序要求,否則失效
link,visited,hover,active
3 hover是所有其他標簽都可以使用的
4 focus只給input標簽使用
(2)CSS偽元素

#1、常用的偽元素。
#1.1 first-letter:雜志類文章首字母樣式調整
例如:
p:first-letter {
font-size: 48px;
}
#1.2 before
用於在元素的內容前面插入新內容。
例如:
p:before {
content: "*";
color: red;
}
在所有p標簽的內容前面加上一個紅色的*。
#1.3 after
用於在元素的內容后面插入新內容。
例如:
p:after {
content: "?";
color: red;
}
在所有p標簽的內容后面加上一個藍色的?。
偽元素是控制內容,例如 :
:first-line與:first-letter,這兩個偽元素只能用於塊級元素。前者用於選擇第一行,后者用於選擇第一個字符。
p.artcle:first-line
{
color:red;
}
p.artcle:first-letter
{
color:green;
}
:first-child偽元素選擇屬於第一個子元素的元素。
span:first-child
{
vertical-align: middle;
}
:before與:after偽元素則可以設置元素之前和之后的內容,並且配合content設置相關內容。
#demo:after,#demo:before
{
content:"--";
display: block;
}
2.3 CSS層疊性和繼承性
CSS層疊性和繼承性
(1) 層疊性
所謂層疊性是指多種css樣式的疊加,
例如,當使用內嵌css樣式表定義p標記字號大小為12像素,鏈入式定義p標記顏色為紅色,那么段落文本將顯示為12像素紅色,即這兩種樣式產生了疊加。
(2) 繼承性
所謂繼承性是指寫css樣式表時,子標記會繼承父標記的某些樣式,
例如文本顏色和字號。想要設置一個可繼承的屬性,只需要將它應用於父元素即可。
恰當地使用繼承可以簡化代碼,降低css樣式的復雜性。
但是,如果在網頁中所有的元素都大量繼承樣式,那么判斷樣式的來源就會很困難,所以對於字體、文本屬性等網頁中通用的樣式可以使用繼承。
例如,字體、字號、顏色、行距等可以在body元素中統一設置,然后通過繼承影響文檔中的所有文本。
注意:並不是所有的css屬性都可以繼承,例如下面的屬性就不具有繼承性:
邊框、外邊距、內邊距、背景、定位、元素寬高屬性等。
所有盒子相關的屬性都不能繼承。
2.4 CSS選擇器優先級
(1) 選擇器優先級概述

(1) 優先級概覽
定義css樣式時,經常出現兩個或多個規則應用在同一元素上,這時就會出現優先級的問題。
內聯樣式最大->內聯樣式的優先級最高;
ID選擇器優先級僅次於內聯樣式;
類選擇器優先級次於ID選擇器;
標簽選擇器優先級次於類選擇器
通配符* 選擇器最低
(2) 繼承樣式權重為0
在嵌套結構中,不管父元素樣式的權重多大,被子元素繼承時,它的權重都為0,也就是說,子元素定義的樣式會覆蓋繼承來的樣式。
(3) 行內樣式權重最高
應用style屬性的元素,其行內樣式的權重非常高,可以理解為遠大於100。總之,它擁有比上面提到的選擇器都大的優先級。
(4) 權重相同則就近原則
權重相同時,CSS遵循就近原則,即靠近元素的樣式具有最大的優先級,或者說排在最后的樣式優先級最高。
所有都相同時,聲明靠后的優先級最大。
(5) !important命令最大優先級
CSS定義了一個!important命令,該命令被賦予最大的優先級,也就是說不管權重如何以及樣式位置的遠近,!important都具有最大優先級。
(6)綜述:
行內樣式>頁內樣式>外部引用樣式>瀏覽器默認樣式
important>內聯>ID>偽類/類/屬性選擇>標簽>偽對象>通配符>繼承
(2) 特指度

特指度
要解決優先級問題,我們需要引入一個概念——特指度(specificity)。
特指度表示一個css選擇器表達式的重要程度,可以通過一個公式來計算出一個數值,數越大,越重要。
這個計算叫做“I-C-E”計算公式,
I——Id;
C——Class;
E——Element;
針對一個css選擇器表達式,遇到一個id就往特指度數值中加100,遇到一個class就往特指度數值中加10,遇到一個element就往特指度數值中加1。
注意:!important優先級最高,高於上面一切。* 選擇器最低,低於一切。
2.5 CSS選擇器的擴展

選擇器的擴展
選擇器本來是css的一種規則,用於為css選擇html節點的。
但是聰明的人類還是通過選擇器創造出了其他領域非常偉大的作品。
jQuery
jQuery被推廣流行的根本原因就是它的“Query”——基於css選擇器的“Query”。
現在的瀏覽器都支持querySelectAll()方法了,其實這就是W3C“抄襲”的jQuery的設計。
zen-Coding
jquery可以通過一段css選擇器表達式從既有的html結構中選擇符合表達式的dom組,但是zen-coding反其道而行之——可以根據css選擇器表達式創造出html節點。不得不佩服這幫人的創造力。