聊聊css屬性值的計算過程

首先一點要明確的是瀏覽器渲染某一個元素之前绍绘,它的每一個css屬性值必須都要有確定的值轧叽,否則是沒法渲染的

那么我們今天要講的就是瀏覽器是怎么一步步的 把每一個屬性值都確定下來的矗烛。

首先我們把最主要的四個步驟簡單列出來憨募,之后再一一講解

  1. 確定聲明值
  2. 解決層疊沖突
  3. 繼承
  4. 默認值

這是一個元素所有的css屬性(總共大概有小幾百個黄痪,這里就不一一列舉了):

/* 這時所有的值都是沒有確定的 */
{
    color:?
    background-color:?
    text-align:?
    font-size:?
    font-weight:?
    display:?
    其他CSS屬性:?
}

假設用戶寫了如下樣式:

.red {
    color:red;
    font-size:40px;
}
h1 {
    font-size:26px;
}
div h1.red {
    font-size:3em;
    font-size:30px;
}

這是瀏覽器默認樣式表:

h1 {
    display: block; 
    font-size: 2em; 
    font-weight: bold;
}

接下來我們來看看瀏覽器是如何根據(jù)這四個步驟將這幾百個屬性值全都確定下來的

1. 確定聲明值

這一步就是說將沒有樣式?jīng)_突的屬性先確定下來

那么這一步完了之后富寿,我們可以確定如下屬性:

    display: block;
    color:red;
    font-weight: bold;

{
    color:red;
    background-color:?
    text-align:?
    font-size:?
    font-weight: bold;
    display:block;
    其他CSS屬性:?
}

2. 解決層疊沖突

這一步就開始要解決沖突了,即對樣式表中有沖突的聲明使用層疊規(guī)則郁副,確定css屬性值

那么層疊規(guī)則又是什么呢?

  1. 重要性
  2. 特殊性
  3. 源次序

首先這個重要性的意思就是:

 !important > 用戶樣式表 > 瀏覽器默認樣式表

這里我們可以看到豌习,color屬性是有沖突的存谎。由于樣式表中沒有!important 標明,所以我們繼續(xù)往后看(如果哪一個地方標明了肥隆,則直接就能確定該值了既荚,但如果有多個地方標明,則還需要進行后面的比較)栋艳,由于用戶樣式表 > 瀏覽器默認樣式表,所以瀏覽器默認樣式表中的樣式就被淘汰了恰聘。然后就進入到了權重的計算,

這里我們可以直接看出

div h1.red {
    font-size:3em;
    font-size:30px;
}

這個選擇器的權重是最高的吸占,但是這里寫了兩個font-size晴叨,那么就需要比較源次序了,這里的意思就是后面的會覆蓋前面的矾屯,那么最終的值就確定為30px

這一步兼蕊,我們最后確定了如下css樣式的屬性值:

{
    color:red;
    background-color: ?
    text-align: ?
    font-size:30px;
    font-weight:bold;
    display:block;
    其他CSS屬性:...
}

3. 繼承

到了這一步盡管確定了一些沒有沖突的,有沖突的屬性值件蚕,但是還是有一些屬性的值沒有確定孙技,因為有一些屬性用戶樣式表和瀏覽器默認樣式表中都沒有進行聲明产禾。所以這一步,對仍然沒有值的屬性牵啦,若可以繼承亚情,則繼承父元素的值

css可以繼承的屬性:

1.字體系列屬性

font:組合字體

font-family:規(guī)定元素的字體系列

font-weight:設置字體的粗細

font-size:設置字體的尺寸

font-style:定義字體的風格

2、文本系列屬性

text-indent:文本縮進

text-align:文本水平對齊

line-height:行高

word-spacing:增加或減少單詞間的空白(即字間隔)

letter-spacing:增加或減少字符間的空白(字符間距)

text-transform:控制文本大小寫

direction:規(guī)定文本的書寫方向

color:文本顏色

3哈雏、元素可見性:visibility

4势似、表格布局屬性:
caption-side、border-collapse僧著、border-spacing履因、empty-cells、table-layout

5盹愚、列表屬性:
list-style-type栅迄、list-style-image、list-style-position皆怕、list-style

6毅舆、光標屬性:cursor

根據(jù)以上信息可以確定,text-algin屬性是可以繼承的愈腾,假設h1標簽的父元素的text-algin的值為center憋活,則h1的text-algin的值也為center。

至此虱黄,我們最后確定了如下css樣式的屬性值:

{
    color:red;
    background-color: ?
    text-align: center;
    font-size:30px;
    font-weight:bold;
    display:block;
    其他CSS屬性:...
}

4. 默認值

到了這一步悦即,對仍然沒有值的屬性,使用默認值

background-color的默認值為transparent橱乱,至此我們就將所有的屬性值確定了下來辜梳。

{
    color:red;
    background-color: transparent;
    text-align: center;
    font-size:30px;
    font-weight:bold;
    display:block;
    其他CSS屬性:...
}

兩個特殊的css屬性

最后,說一下兩個特殊的css屬性:

  • inherit泳叠。強制(手動)繼承作瞄,將父元素的值取出應用到該元素(不管這個屬性值是否可以繼承)。
  • initial危纫。初始值宗挥,將該元素的屬性變?yōu)槟J值。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末种蝶,一起剝皮案震驚了整個濱河市契耿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛤吓,老刑警劉巖宵喂,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異会傲,居然都是意外死亡锅棕,警方通過查閱死者的電腦和手機拙泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裸燎,“玉大人顾瞻,你說我怎么就攤上這事〉侣蹋” “怎么了荷荤?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長移稳。 經(jīng)常有香客問我蕴纳,道長,這世上最難降的妖魔是什么个粱? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任古毛,我火速辦了婚禮,結果婚禮上都许,老公的妹妹穿的比我還像新娘稻薇。我一直安慰自己,他們只是感情好胶征,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布塞椎。 她就那樣靜靜地躺著,像睡著了一般睛低。 火紅的嫁衣襯著肌膚如雪案狠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天暇昂,我揣著相機與錄音莺戒,去河邊找鬼。 笑死急波,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瘪校。 我是一名探鬼主播澄暮,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阱扬!你這毒婦竟也來了泣懊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤麻惶,失蹤者是張志新(化名)和其女友劉穎馍刮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窃蹋,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡卡啰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年静稻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匈辱。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡振湾,死狀恐怖,靈堂內的尸體忽然破棺而出亡脸,到底是詐尸還是另有隱情押搪,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布浅碾,位于F島的核電站大州,受9級特大地震影響,放射性物質發(fā)生泄漏垂谢。R本人自食惡果不足惜厦画,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望埂陆。 院中可真熱鬧苛白,春花似錦、人聲如沸焚虱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹃栽。三九已至躏率,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間民鼓,已是汗流浹背薇芝。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丰嘉,地道東北人夯到。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像饮亏,于是被迫代替她去往敵國和親耍贾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容