CSS樣式權重的級聯cascade的概念深入理解

2022-09-25 10:27:08 字數 1977 閱讀 3626

我們知道,firefox在眾多瀏覽器中是對css 2高度相容的一款瀏覽器,那是我能夠編寫乙個中型b2b**的時候(並不能說是我遇到過的難題)在禪意花園中看到的乙個案例,說的是某個選單在css中定義了以後只能在firefox中正常顯示。因為那個css涉及的濾鏡太多,而且還有css中"級聯(cascade)"這種強大功能的支援。

那麼級聯樣式表css中的"級聯"到底是什麼意思呢?w3c是這樣來描述的:css級聯為每個樣式規則指派權重,若元素應用了多個樣式規則,那麼將優先使用權重最高的的樣式。

聽說搜尋引擎對某個**的賦予的權重比較高或比較低,但是css中的"級聯"賦予的權重是什麼呢?w3c的這段定義,看上去很富有深意,但是它只包含了兩個資訊傳遞給了我們,那就是---特殊性和繼承性。這兩個概念將會成為我們學習的良師益友。當然,凡事都是兩面的,也有可能成為我們的噩夢!接下來我們就來著重來說一下這個級聯能夠對我們書寫帶來些什麼!

級聯概括了兩個概念---特殊性和繼承性,下面我們開始說一下這個繼承性,繼承性也就是你定義乙個樣式這個樣式可以運用到它的子孫子元素,當然,不一定要都運用乙個樣式,也可以賦予幾個選擇器中的幾個不同樣式。我們線看下**:

複製**

**如下:

.box

再來看段**:

複製**

**如下:

.box

.box .archive

這樣的話大家大概能弄明白這個繼承的含義了?如果我們每次都要定義乙個樣式,每個寫乙個選擇器,累死人,不可想象有多大的工作量。

下面我們來看下這個特殊性有什麼魅力。

前面我們已經來看到了兩個例子,我們應該也能從中讀到些什麼吧,首先我們看到後面的規則比前面的權重高,比較特殊一點,儘管特殊性的例子看著比較簡單,但是它本身存在的問題可不少。我們完全可能不經意的時候創造出了特殊過分了的樣式規則,如果想要解決,我們需要想出更特殊的樣式規則!在看**(有**有真相):

複製**

**如下:

body>html #head ul.n**igation li.home a

body>html #head ul.n**igation li.home a:hover

mgudaisg

控制特殊性:我們看到上面的是不是太特殊了?有點過分複雜?沒關係,我們接下來再來個**真相。

複製**

**如下:

#linklist ul li h3

#linklist h3

上面的例子表明了我們不能一層一層的來做無用功,有時候甚至對瀏覽器的解析也是一種負擔。寫了很多額外的選擇器,卻沒有得到應有的評價。

從理論上來說,css規則的權重高低問題取決於css選擇符優先順序的的計算結果。css行內樣式與各種選擇符都可以採用某乙個數值來表示:

行內樣式(即直接在結構中給元素style屬性)為:1000

id選擇符為:0100

類選擇符、每個屬性選擇符(形如[attr=value]等)、每個偽類(形如:hover等):0010

型別選擇符(即標籤元素或偽元素)為:0001

其它選擇符包括全域性選擇符*,加0000。相當於沒加,不過這也是一種specificity

某一樣式權重的最終確立取決於各選擇器相加的結果,如:

選擇符 特性值

h1 1

p em 1+1=2

.apple 10

p.bright 1+10=11

p.bright em.dark 1+10+1+10=22

#id316 100

按這些規則將數字串逐位相加,就得到最終的權重,然後在比較取捨時按照從左到右的順序逐位比較。而css繼承性的權重是非常低的,是比普通元素的權重還要低的0。因此形如body>html #head ul.n**igation li.home a的選擇器,要想實現子類繼承其子類選擇符權重值就不能低於其本身的權重值,同時這也加重了瀏覽器的負擔,所以可以利用上面介紹的方法控制其特殊性。

本文標題: css樣式權重的級聯cascade的概念深入理解

本文位址:

級聯樣式表css

菜鳥第三天 今天學習了乙個很神奇的css樣式 當然,一天的時間不可能全部學完.今天主要學習了有四大塊知識點 基本語法 樣式 選擇器 層次選擇器 一 基本語法 1 語法結構 h1,這一串符號,是基本語法的結構,其中h1為選擇器,fonr size為屬性,18px為值,2 style標籤 一組 奉上。二...

層疊樣式表的權重 css解決樣式衝突,css選擇器

層疊 宣告衝突 同乙個樣式多次用到同乙個元素上面 層疊 解決宣告衝突的過程,瀏覽器自動解決 權重比較 需了解原理,才能寫好樣式表 權重比較 比較重要性 由高到低 1 作者樣式表 你自己寫的css 中的 important 樣式 慎用,實際幾乎不會使用,層級太高,會影響後期維護修改 div 2 作者樣...

CSS樣式優先順序及權重

一 什麼是繼承性?作用 給父元素設定一些屬性,子元素也可以使用,這個我們就稱之為繼承性。color red p div 的 color red 屬性,這個屬性將被 繼承,即 也擁有屬性 color red 直接樣式 比 祖先樣式 優先順序高。類名為 son 的 div 的 color 為 blue ...