CSS中經(jīng)常提到C,它代表著Cascading,也就是“層疊”的意思。那么,Cascading在CSS中具體指什么呢?
p { color: red; } .special { color: blue; }
在上面的代碼中,我們定義了一個p元素的樣式,將它的文本顏色設(shè)置為紅色。接著,我們又定義了一個類名為“special”的元素樣式,將它的文本顏色設(shè)置為藍色。
現(xiàn)在,如果我們在HTML中同時應(yīng)用了這兩種樣式,會發(fā)生什么呢?
<p class="special"></p>
答案是,文本顏色會變成藍色!為什么呢?
這就要涉及到CSS的Cascading優(yōu)先級(Specificity)的概念了。當Cascading的兩個樣式規(guī)則應(yīng)用于同一個元素上時,它們將根據(jù)以下規(guī)則進行優(yōu)先級的排序,來決定應(yīng)用哪一個樣式:
- !important聲明的樣式具有最高優(yōu)先級。
- ID選擇器的優(yōu)先級要高于屬性選擇器、類選擇器或元素選擇器。
- 如果兩個選擇器的特征相同,則后面的那個優(yōu)先級更高。
在我們的例子中,雖然兩個樣式規(guī)則都是針對p元素的,但是由于“special”選擇器是一個類選擇器,而不是元素選擇器,因此它的優(yōu)先級要高于第一個規(guī)則(元素選擇器)。換句話說,類選擇器的優(yōu)先級比元素選擇器的優(yōu)先級更高,所以元素選擇器的樣式規(guī)則被“層疊”掉了。
這就是CSS中Cascading的概念和作用,它能夠幫助我們?yōu)橥粋€元素應(yīng)用多個樣式規(guī)則時,按照一定的規(guī)則來決定最終應(yīng)用哪一個規(guī)則,從而達到更精確的樣式控制。