/* 情況 1:無 div,頂部貼邊 */
html, body { margin: 0; padding: 0; }
/* 情況 2:加入 div,頂部出現 8px 空白 */
html, body, div { margin: 0; padding: 0; } /* 看似同樣設置,實則不同 */
瀏覽器 User Agent Stylesheet 默認:
body { margin: 8px; } /* 關鍵! */
div { margin: 0; } /* div 默認無 margin */
| 階段 | 情況 1:僅設置 body | 情況 2:設置 body, div |
|---|---|---|
| UA 默認 | body: 8px | body: 8px, div: 0 |
| 作者樣式 | body: 0 | body: 0, div: 0 |
| 最終計算值 | body.margin = 0 ✅ | body.margin = 0, div.margin = 0 ❌ |
關鍵差異:情況 1 中,選擇器 body 直接覆蓋了 UA 的 body。情況 2 中,選擇器 div 匹配 div 元素,但 並未選中 body,因此 body 保持 UA 默認的 8px!
/* 方案 1:顯式列出所有需重置標籤 */
html, body, div, h1, h2, p, ul, li /* ... */ { margin: 0; padding: 0; }
/* 方案 2:通配符重置(簡單但影響性能) */
* { margin: 0; padding: 0; box-sizing: border-box; }
/* 方案 3:現代 CSS Reset / Normalize.css(推薦) */
/* 引入 normalize.css 或自定義 reset.css */
div { margin: 0 } 僅作用於 <div> 元素<body> 元素,需要 body { margin: 0 } 直接匹配body div 選的是 body 內的 div,不選 body 本身