首頁 > web前端 > js教程 > 了解瀏覽器中的渲染:CSSOM

了解瀏覽器中的渲染:CSSOM

Barbara Streisand
發布: 2024-11-11 14:25:02
原創
812 人瀏覽過

嘿,本文是有關瀏覽器中渲染的系列文章的一部分。如果您還沒有閱讀過之前的文章,請查看以下連結:

  • 了解瀏覽器中的渲染:DOM

在上一篇文章中,我們探討了瀏覽器如何透過 DOM(文件物件模型)處理 HTML,DOM 定義了網頁的結構。然而,網頁不僅僅由 HTML 組成,許多人仍然不知道 CSS 也有自己的物件形式表示,稱為 CSSOM(CSS 物件模型)。

瀏覽器使用 CSSOM 結合 DOM 來建立頁面,結合結構 (HTML) 和樣式 (CSS),從而產生和諧的視覺呈現。

在本文中,我們將加深對 CSSOM 的了解,了解它的結構、重要性以及如何操作它。

CSSOM是什麼?

與 DOM 一樣,CSSOM 是一種分層資料結構,但其功能是表示 Web 文件的 CSS。

CSSOM是瀏覽器在載入並處理樣式檔案後產生的。儘管它是與 DOM 分開構建的,但兩者一起工作,以便瀏覽器可以使用正確的結構 (DOM) 組裝頁面並應用適當的樣式 (CSSOM)。

CSSOM 的主要功能是為瀏覽器提供應該套用於頁面上每個元素的樣式的詳細「地圖」。

看下面 CSSOM 的視覺表示:

Entendendo renderização no browser: CSSOM

在程式碼中,這種表示方式如下所示:

我們之前看到的引用 CSSOM 的 DOM 樹表示如下:

Entendendo renderização no browser: CSSOM

操作 CSSOM

瀏覽器為我們提供了一組 API,讓我們可以使用 javascript 操作 CSS。它類似於 DOM API,但針對 CSS 而不是 HTML。

使用此 API,我們可以動態讀取和操作頁面的 CSS。

操作樣式最簡單的方法是透過文件中存在的樣式屬性。

要首次存取和操作 CSSOM 元素,請開啟瀏覽器控制台並執行以下程式碼:

執行上面的程式碼片段後,我建議您檢查頁面元素並分析正文。請注意,現在我們的主體具有內聯樣式,看起來或多或少像這樣:

我們可以在頁面上新增或更改任何 CSS 屬性,並始終遵循 element.style.propertyname 模式。

操縱內聯樣式的另一種方法是透過樣式中存在的一些方法。

  • setProperty:使用此方法您可以新增或變更內聯屬性的值。
  • getPropertyValue:使用此方法您可以存取內聯屬性的值。
  • removeProperty:使用此方法您可以刪除內嵌屬性。

getCompulatedStyle 僅適用於唯讀。您將能夠存取任何元素或偽元素的樣式訊息,但無法進行更改。

非內聯樣式怎麼辦?

編寫內聯樣式並不常見,因此我們也可以存取計算樣式,也就是我們在樣式表中定義的樣式。為此,我們可以直接存取和操作我們的樣式表。

在瀏覽器控制台中執行下面的程式碼片段:

有了它,您將可以存取 html 頭部聲明的所有樣式表。

這些樣式表以列表格式傳回(看起來像數組,但其實不是),您可以透過索引存取它。

從現在開始,我建議在其他地方執行測試,因為這個部落格是用 Tailwind CSS 製作的,並且操作樣式表變得更加複雜。

訪問此頁面並在其控制台中執行命令。

透過執行上面的程式碼,您將可以存取樣式表中存在的所有 CSS。按照與上面相同的邏輯,您可以透過索引存取元素。

在上面的程式碼中,我正在訪問頁面主體樣式聲明。

透過存取 style 屬性,我們可以新增或變更任何 CSS 屬性,但無需編寫內嵌樣式。

我建議您透過更改索引和更改不同元素的 CSS 來更多地使用此 api。

結論

就像 DOM 一樣,CSSOM 是瀏覽器用來渲染過程的樹狀表示形式。

我們可以存取頁面的所有 CSS 並使用 javascript 自由操作它。了解如何執行此類操作對於理解樣式組件、線性等 CSS 工具至關重要

基礎知識最重要,但卻常被忽略。
在 Web 開發中,了解 HTML、CSS、JavaScript 以及瀏覽器的工作原理至關重要。有了這個堅實的基礎,您將能夠學習源自這些基礎知識的任何技術。

非常感謝! !

感謝您來到這裡!

我希望您在閱讀本文時學到了一些新東西。

下次再見!

參考

CSS 物件模型

建構物件模型

CSSOM — CSS 物件模型

CSS 物件模型 (CSSOM) 簡介與指南

以上是了解瀏覽器中的渲染:CSSOM的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板