6 屬性賦值,層疊(Cascading)和繼承
6.1 指定值,計算值和實際值
屬性的最終值是4步計算的結果:css
- 先經過指定來肯定值(「指定值(specified value)」),
- 接着處理獲得一個用於繼承的值(「計算值(computed value)」),
- 而後若是有必要的話轉化爲一個絕對值(「應用值(used value)」),
- 最後根據本地環境限制進行轉換(「實際值(actual value)」)
6.1.1 指定值
- 若是層疊產生了一個值,就使用它
- 不然,若是屬性是繼承的而且該元素不是文檔樹的根元素,使用其父元素的計算值
- 不然使用屬性的初始值,每一個屬性的初始值都在屬性定義中指出了(環境默認值)
6.1.2 計算值
舉例:URI被轉換成絕對的,'em'和'ex'單位被計算爲像素或者絕對長度。瀏覽器
6.1.3 應用值
有些值只能在文檔佈局完成時肯定。例如:佈局
- 若是一個元素的寬度是其包含塊的特定百分比,在包含塊的寬度肯定以前沒法肯定這個寬度。應用值是把計算值剩餘的依賴(值)都處理成絕對值後的(計算)結果
6.1.4 實際值
應用值應該用於渲染,但用戶代理可能沒法在給定的環境中利用該值。例如,ui
- 用戶代理或許只能用整數像素寬度渲染邊框,所以不得不對寬度的計算值作近似處理,
- 用戶代理可能被迫只能用黑白色調而不是全綵色。實際值是通過近似處理後的應用值
6.2 繼承
繼承是繼承計算值,因此百分比繼承的是百分比以前的值url
6.2.1 'inherit'值
每一個屬性也可能有一個'inherit'層疊值,表示對於一個給定的元素,屬性採用與其父級屬性相同的指定值。代理
6.3 @import規則
引入能夠指定媒體(媒體查詢)code
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
6.4 層疊(cascade)
css中樣式的來源有三者繼承
- 編寫者:編寫者根據文檔語言約定給源文檔指定樣式表。例如,HTML中,樣式表能夠包含在文檔中或者從外部連接
- 用戶:用戶可能會給某個特定文檔指定樣式信息。例如,用戶能夠指定一個含有樣式表的文件,或者用戶代理可能會提供一個用來生成用戶樣式表(或者表現得像這樣作了同樣)的界面
- 用戶代理: (與CSS規範)一致的用戶代理必須應用一份默認樣式表(或者表現得像它作了同樣)。用戶代理的默認樣式表應該以知足文檔語言通常表現預期的方式來呈現文檔語言元素(例如,對於可視化瀏覽器,HTML中EM元素用斜體來表示)。關於HTML元素的推薦默認樣式表,見一份簡單的HTML樣式表
8 盒模型
8.3 外邊距屬性
8.3.1 合併外邊距
這塊《css世界》p87講得比較簡單ci