日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

浏览器字体大小设置_CSS之 浏览器解析样式的过程

發布時間:2023/12/10 HTML 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浏览器字体大小设置_CSS之 浏览器解析样式的过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閱讀本文約需要10分鐘

大家好,我是你們的導師,經常看我朋友圈的同學應該知道,我每天會在微信上給大家免費提供以下服務!

1、長期為你提供最優質的學習資源!

2、給你解決技術問題!

3、每天在朋友圈里分享優質的技術文章!

4、每周1、3、5送紙質書籍免費送給大家,每年至少送書800本書!

5、為大家推薦靠譜的就業單位!

請注意!我上面說的5點全部都是免費的!全網你應該找不到第二家吧!

當然,大家在我私人微信上問我問題,僅限回答web前端、java相關的。

---------------------------

好了,接下來開始今天的技術分享!上次老師跟大家分享了React 面試知識點的知識,今天跟大家分享下CSS之 瀏覽器解析樣式的過程的知識。

1 解析一旦 CSS 被瀏覽器下載,CSS 解析器就會被打開來處理它遇到的任何CSS。這可以是單個文檔內的CSS、例如,考慮以下 CSS:
.fancy-button { background: green; border: 3px solid red; font-size: 1em;}以上 CSS 片段將生成如下數據結構,以便在后續的過程中方便使用:值得注意的一件事是,瀏覽器將?background?和?border?的簡寫還原成普通寫法,也就是一個一個屬性的聲明,因為簡單寫主要方便開發人員的編寫,但從這里開始,瀏覽器只處理普通寫法。完解析成之后,瀏覽器引擎繼續構建 DOM 樹。2?計算既然我們已經解析了現有內容中的所有樣式,接著就是對它們進行樣式計算了。我們嘗試盡量對所有值減少到一個標準化的計算值。當離開計算階段時,任何維度值都被縮減為三個可能的輸出之一:auto、百分比或像素值。為了清晰起見,讓我們看幾個例子,看 web 開發人員寫了什么,以及計算后的結果:現在我們已經計算了數據存儲中的所有值,是時候處理級聯了。3?級聯由于 CSS 來源有多種,所以瀏覽器需要一種方法來確定哪些樣式應該應用于給定的元素。為此,瀏覽器使用一個名為?特殊性(specificity)?的公式,它計算選擇器中使用的標記、類、id 和屬性選擇器的數值,以及?!important聲明的數值。通過內聯?style?屬性在元素上定義的樣式被賦予一個等級,該等級優先于?同一級別的個數,數量多的優先級高,假設同樣即比較下一級別的個數。至于各級別的優先級例如以下:!important > 內聯 > ID > 類 > 標簽 | 偽類 | 屬性選擇 > 偽對象 > 通配符 > 繼承選擇器的特殊性由選擇器本身的組件確定,特殊性值表述為5個部分,如:
0,0,1,0,1(1)、對于選擇器中給定的各個?!important?屬性值,加 1,0,0,0,0 。(2)、對于選擇器中給定的各個ID屬性值,加 0,0,1,0,0 。(3)、對于選擇器中給定的各個類屬性值、屬性選擇器或偽類,加 0,0,0,1,0 。(4)、對于選擇器中給定的各個元素和偽元素,加 0,0,0,0,1 。偽元素是否具有特殊性?在這方面CSS2有些自相矛盾,不過CSS2.1很清楚的指出,偽元素具有特殊性,而且特殊性為 0,0,0,0,1,同元素特殊性相同。(5)、結合符(+ > [] ^= $= 等等特殊符號)和通配符(*)對特殊性沒有任何貢獻,此外通配符的特殊性為 0,0,0,0,0。全是 0 有什么意義呢?當然有意義!子元素繼承祖先元素的樣式根本沒有特殊性,因此當出現這種情況后,通配符選擇器定義的樣式聲明也要優先于子元素繼承來的樣式聲明。因為就算特殊性是0,也比沒有特殊性可言要強。為了說明這一點,讓我們說明一些選擇器及其計算后的權重數值:而當優先級與多個CSS聲明中任意一個聲明的優先級相等的時候,CSS 中最后的那個聲明將會被應用到元素上。在下面的示例中,div?將具有藍色背景。
div { background: red;}
div { background: blue;}現在CSS將生成以下數據結構,在本文中,我們將繼續在此基礎上進行構建。來源CSS也有來源,但它們的用途不同:CSS信息可以從各種來源提供,這些來源可以是 用戶(user) 和 作者(author) 及 用戶代理/瀏覽器(user agent),優先級如下:用戶樣式瀏覽器還允許用戶設置網頁的樣式,例如,我們用IE瀏覽網站的時候,都可以通過瀏覽器查看菜單下的樣式或者文字大小子菜單來設置網頁實際的顯示效果。作者樣式網頁創建者建立的樣式表,一般會css文件出現或者是在頁面頭部里定義的style,也就是網站源代碼的一部分。例如,大家看百度和谷歌的頁面就不一樣,這就是作者樣式不一樣的結果。用戶代理/瀏覽器樣式也就是瀏覽器自身設置用來顯示網站的樣式,不同的瀏覽器可能有不同的樣式表,例如IE和Firefox的就不一樣,所以大家分別使用這兩種瀏覽器訪問同一個網站的時候,看到實際效果可能就不同。通常情況下,作者樣式具有最高的重要性,其次是用戶樣式,最后才是瀏覽器樣式,但是如果出現了?!important?標記的話,那么規則會被改變,通過?!important?可以提高某種樣式的重要性,讓它的優先級高于其他沒有加該聲明的所有樣式。讓我們進一步擴展我們的數據集,看看當用戶將瀏覽器的字體大小設置為最小?2em?時會發生什么:做級聯當瀏覽器擁有一個完整的數據結構,包含來自所有源的所有聲明時,它將按照規范對它們進行排序。首先,它將按來源排序,然后按特性(specificity)排序,最后按文檔順序排序。從上圖可知,類名為?.fancy-button優先級最高(表中越上面優先級越高)。例如,從上表中,人會注意到用戶的瀏覽器首選項設置優先 于Web 開發人員的設置樣式。現在,瀏覽器找到與選擇器匹配的所有 DOM 元素,并將得到的計算樣式掛載到匹配的元素,在本例中?div?為類名為?.fancy-button:如果您希望了解更多關于級聯的工作原理,請查看官方規范。CSS對象模型雖然到目前為止我們已經做了很多,但還沒有完成。現在我們需要更新?CSS對象模型(CSSOM)。?CSSOM 位于document.stylesheets?中,我們需要對其進行更新,以便讓它知道我們目前為止已經解析和計算的所有內容。Web 開發人員可能在沒有意識到的情況下使用這些信息。例如,當調用?getComputedStyle()?時,如果需要,運行上面指出的相同過程布局現在我們已經應用了一個具有樣式的 DOM 樹,然后開始構建一個用于可視化目的的樹了。這棵樹出現在所有現代引擎中,被稱為盒子樹(box tree)。為了構造這棵樹,我們遍歷 DOM 樹并創建零個或多個 CSS 盒子,每個盒子都有一個?margin、border、padding?和?content?。在本節中,我們將討論以下 CSS 布局概念:格式化上下文(FC):有許多類型的格式化上下文,其中大多數 Web 開發人員通過更改?display?元素的值來調用。一些最常見的格式化上下文是塊(塊格式化上下文或BFC),flex,grid,table-cells 和 inline。其他一些CSS也可以強制使用新的格式化上下文,例如?position: absolute,float?或使用?multi-colum。包含塊:這是用于解析樣式的祖先塊。內聯方向:這是文本布局的方向,由元素的書寫模式決定。?在拉丁語言中,這是水平軸,在 CJK 語言中,這是垂直軸。塊方向:此行為與內聯方向完全相同,但與內聯軸垂直。因此,對于基于拉丁語的語言,這是垂直軸,而在CJK語言中,這是水平軸。解析 Auto請記住,在計算階段,維度值可以是三個值之一:auto、百分數或像素。布局的目的是在Box Tree中調整所有盒子的大小和位置,使它們為繪制做好準備。下面示例可以更容易地理解Box Tree是如何構建的。為了便于理解,這里不顯示單獨的CSS框,只顯示主盒(principal box)。讓我們看看一個基本的 “Hello world” 布局使用以下代碼:

Hello world

總結

以上是生活随笔為你收集整理的浏览器字体大小设置_CSS之 浏览器解析样式的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。