BridgeCraft logobridgecraft
週報顧問服務作品集關於聯絡登入
聯絡

bridgecraft

從資料視覺化到 AI Agent,一直在找下一個 meta

文章主題指南週報顧問服務Labs作品集系統架構關於聯絡RSS

© 2026 BridgeCraft — Waiting7777. All rights reserved.

← 所有文章

CSS 渲染原理與優化策略讀後心得

2021年10月15日 · Waiting7777 · 2 分鐘閱讀

既然 CSS 排名在上升,那麼我們花點時間來研究相關原理也就物有所值了。

CSS 渲染

HTML Parser 產生 DOM tree,CSS Parser 產生 style rules,然後就是常見的 render tree,經過 layout paint composition 把畫面畫出來。

CSS 特性

1. 優先級

CSS 有一套權重規則,某個元素被套用多個 css 時,取權重高的。

!import > inline > ID > class > attr > elements

2. 層疊性

層疊性就是對多個樣式來源進行疊加,然後根據權重規則來處理衝突。

3. 繼承性

font, text, color 類的 css ,如果本身沒有樣式,會繼承父元素的樣式,但優先級是非常低的。

CSS 選擇器執行順序

渲染引擎解析 css selector 的時候是從右往左解析,為什麼呢?

<div>
   <div class="test">
      <p><span> 111 </span></p>
      <p><span> 222 </span></p>
      <p><span> 333 </span></p>
      <p><span class='yellow'> 444 </span></p>
   </div>
</div>

CSS 如下:

div > div.test p span.yellow{
   color:yellow;
}

如果從左往右,要先找到所有 div 再來要找到所有子 div 並且 class 是 test,再依序尋找 p span.yellow ,然後如果沒有找到,再回到最原先的 div 重新找。

一聽是不是覺得很沒有效率?所以其實是從右往左解析,因為通常越右邊的條件越嚴苛,元素越少,所以先把右邊的都找出來,再看父元素是否符合規則即可。

高效的 ComputedStyle

瀏覽器還有個非常好的策略,如果多個 Element 的 style 可以不通過計算就能知道相等,那麼就會只計算一次,並且共用那次的 CompoutedStyle 結果。

<section class="one">
    <p class="desc">One</p>
</section>

<section class="one">
    <p class="desc">two</p>
</section>

  • TagName 和 Class 要一樣
  • 不能有 style 屬性
  • 不能使用 Sibling selector ,如: first-child
  • mappedAttribute 必須相等

優化策略

在理解了渲染原理,以及解析原理後,整理出了一些優化的原則可供參考:

  • id selector ,id selector 非常高效,因為是網頁裡唯一。

  • 避免太深層的 css 例如:

/* Bad  */
div > div > div > p {color:red;} 
/* Good  */
p-class{color:red;}

  • 盡量少用 attribute selector
/* Bad  */
p[id="test"]{color:red;}  
p[class="blog"]{color:red;}  
/* Good  */
#test{color:red;}  
.blog{color:red;}

  • 遵守 CSSLint 規則

  • 減少 CSS 文件大小

  • 移除空的規則

  • 值為0不需要單位

  • CSS Will Change

will-chage 屬性讓開發者可以提前告訴瀏覽器會有哪些變化,讓瀏覽器提早做準備

  • 避免過分 reflow 常見的 reflow 元素:
width
height
padding
margin
display
border-width
border
top
position
font-size
float
text-align
overflow-y
font-weight
overflow
left
font-family
line-height
vertical-align
right
clear
white-space
bottom
min-height

  • 高效的利用 computedStyle

  • 共用 class

  • 謹慎使用 childSelector

  • 盡可能共享

結語:

過去在寫 css 的時候通常都是想要什麼寫什麼,所以常常有多餘的互相蓋來蓋去,在用了 tailwindcss 之後,以及文章中提到的 computedStyle 或許最後共用且原子化的 css 就是最好用的了。

參考資料

http://jartto.wang/2019/10/23/css-theory-and-optimization/

每週一篇 — 技術趨勢背後的商業邏輯

分享:

Waiting7777

WoW Arena 冠軍轉前端,用電競 meta 思維拆解技術趨勢。

關於作者

相關文章

AI 時代悲劇:爬蟲吃光內容 最後誰來餵 AI?AI

AI 時代悲劇:爬蟲吃光內容 最後誰來餵 AI?

從遊戲設計角度看這個問題:一個讓所有玩家都想當 free rider 的機制設計,最後一定崩潰。分析 AI 公司、內容創作者、讀者三方的利益衝突,以及可能的出路長什麼樣。

2026年8月14日 · HW SHU · 7 分鐘閱讀

繼續閱讀 →
YC 裡越來越多二次創業者 — AI 時代為什麼老手反而更吃香創業創投+4

YC 裡越來越多二次創業者 — AI 時代為什麼老手反而更吃香

為什麼 AI 時代反而讓「老手」更吃香?從 YC 的數據看 repeat founder 的優勢在哪,以及這對第一次創業的人有什麼啟示。

2026年8月12日 · Waiting7777 · 7 分鐘閱讀

繼續閱讀 →
OpenChamber:專為 AI Agent 設計的開發環境,跟 IDE 的差別在哪?AI Agents開發工具+5

OpenChamber:專為 AI Agent 設計的開發環境,跟 IDE 的差別在哪?

拆解 OpenChamber 的設計邏輯:為什麼 agent 需要專屬的開發環境、跟直接在 terminal 跑 Claude Code 有什麼本質差異,以及這個方向的商業潛力在哪。

2026年8月11日 · Waiting7777 · 8 分鐘閱讀

繼續閱讀 →

這篇文章對你有幫助嗎?

每週一篇 — 技術趨勢背後的商業邏輯

AI 產業在變什麼、工程師該注意什麼——拆清楚寄到你的信箱。