CSS屬性值的計算

2021-09-25 14:52:08 字數 2186 閱讀 3794

瀏覽器如何渲染頁面

乙個元素乙個元素依次渲染,順序按照頁面文件的樹形目錄結構進行

渲染每個元素的前提條件

該元素的所有css屬性都必須要有值

屬性值的計算過程

乙個元素從所有屬性都沒有值,到所有的屬性都有值,這個計算過程,叫做css屬性值計算過程

宣告衝突

多個css樣式,多次應用到同乙個元素

層疊

解決宣告衝突的過程,瀏覽器自動處理(按權重計算)

繼承

子元素會繼承父元素的某些css的屬性

通常跟文字內容相關的屬性會被繼承

1.確定宣告值:參考樣式表中沒有衝突的宣告,作為css屬性值

樣式表可以使作者樣式表也可以是瀏覽器預設樣式表

2.層疊衝突:對樣式表有衝突的宣告使用層疊規則,確定css屬性值

3.使用繼承:對仍然沒有值的屬性,若可以繼承則繼承父元素的值

4.使用預設值:對仍然沒有值得屬性,全部繼承預設屬性

以乙個針對h1的例子為說明:

剛開始時作者樣式是這樣的

h1在瀏覽器中的預設樣式是這樣的(我的是谷歌瀏覽器)

在執行完第乙個步驟之後css的屬性變成這樣

第二步:層疊衝突

對樣式表有衝突的宣告使用層疊規則,確定css屬性值

這一步執行完後的css屬性是

作者樣式表中的字型大小屬性於瀏覽器預設的字型大小屬性衝突,最終經過權重計算,選擇作者樣式表中的字型屬性作為最終渲染效果的字型屬性

3.使用繼承:對仍然沒有值的屬性,若可以繼承則繼承父元素的值

繼承text-align:center這個屬性

4.使用預設值:對仍然沒有值得屬性,全部繼承預設屬性

最後改元素擁有所有的css屬性值

顯示不全,只是其中的一部分,有興趣的話,可以拿自己的電腦試一試

問題1

p元素和a元素同為div下的子元素,為什麼p元素繼承了div的字型顏色這個屬性,但a元素卻沒有繼承?

今天下雨了

今天下雨了

這便和上面說到的css屬性值的計算有關,在第一步執行時因為瀏覽器給a標籤有預設的字型顏色,所以a標籤會使用這個預設的字型顏色,而不會繼承父級元素div的字型顏色。但是瀏覽器沒有給p標籤有預設的字型顏色,所以才會繼承父級元素div的字型顏色。

問題2

如果還想a標籤繼續繼承父元素的字型顏色這個屬性,那麼要怎麼辦?

先介紹兩個特殊的css取值

inherit:手動(強制繼承),將父元素的值取出應用到該元素

initial:初始值,將該屬性設定為預設值

那麼就只需要這樣改就好了

css屬性值的計算

了解css屬性值的計算之前,我們先了解一下瀏覽器的html文件的渲染過程 html文件載入時 先載入html 搭建出骨架 然後按照html文件樹的樹形順序依次給每個元素渲染樣式屬性 1 每個元素渲染的前提條件是 該元素的所有css屬性都必須有值 我們可能只指定部分css屬性,但是那些預設的css屬性...

CSS屬性值的計算過程

瀏覽器渲染網頁 乙個元素乙個元素依次渲染,順序按照頁面文件的樹形目錄結構進行渲染的 渲染每個元素的前提條件,該元素的所有css屬性必須有值 乙個元素,從所有屬性都沒有值,到所有的屬性都有屬性值,這個計算過程,叫做屬性計算過程 html元素 到有值從沒有值到到有值的過程 確定宣告值 參考樣式表中沒有衝...

CSS屬性值的計算過程

確定宣告值 包括作者樣式表,就是自己寫的,還有瀏覽器預設樣式表 這一步會參考樣式表中沒有衝突的宣告作為css屬性值 層疊衝突 第一步有衝突的宣告,會使用層疊規則確定css屬性值 比較重要性 重要性從高到低 作者樣式表 我們自己寫的 中的 importment 不推薦使用 作者樣式表中的普通樣式 不加...