一個好的 CSS reset 檔案旨在提供一個乾淨的、一致的起點,消除瀏覽器預設樣式的差異,並確保跨不同瀏覽器和裝置的佈局一致性。以下是一個手寫的 reset 檔案示例,並附帶了需要考慮的方面:
/* Reset.css */
/* 1. Box Sizing: 使用 border-box 模型,使元素的寬度和高度包含 padding 和 border */
*, *::before, *::after {
box-sizing: border-box;
}
/* 2. Margin & Padding: 清除所有元素的預設外邊距和內邊距 */
* {
margin: 0;
padding: 0;
}
/* 3. 繼承:防止一些元素繼承父元素的樣式 */
button, input, select, textarea {
font-family: inherit;
font-size: inherit;
}
/* 4. 列表樣式:移除列表的預設樣式 */
ul, ol {
list-style: none;
}
/* 5. 連結樣式:移除連結的下劃線 */
a {
text-decoration: none;
}
/* 6. 圖片樣式:阻止圖片超出其容器 */
img {
max-width: 100%;
display: block; /* 防止圖片底部出現空白 */
}
/* 7. 表格樣式:移除表格的預設邊框和間距 */
table {
border-collapse: collapse;
border-spacing: 0;
}
/* 8. 排版:設定預設字型和行高 */
body {
font-family: sans-serif; /* 或指定你喜歡的字型 */
line-height: 1.5;
-webkit-font-smoothing: antialiased; /* macOS/iOS */
-moz-osx-font-smoothing: grayscale; /* Firefox */
}
/* 9. 標題樣式:根據需要調整標題樣式 */
h1, h2, h3, h4, h5, h6 {
font-weight: normal; /* 或你想要的粗細 */
margin-bottom: 1em; /* 或你想要的間距 */
}
/* 10. 表單元素:去除預設外觀 */
button, input, select, textarea {
border: none;
background-color: transparent;
outline: none; /* 移除焦點時的輪廓 */
appearance: none; /* 移除系統預設樣式,尤其對移動端有用 */
}
/* 11. 可互動元素的樣式 */
button:focus, input:focus, select:focus, textarea:focus {
/* 新增你想要的焦點樣式,例如 outline 或 box-shadow */
}
/* 12. HTML5 元素樣式:為 HTML5 元素新增樣式 */
article, aside, details, figcaption, figure,
footer, header, hgroup, main, menu, nav, section {
display: block;
}
/* 13. 隱藏元素 */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
需要考慮的方面:
- 特異性 (Specificity): 使用萬用字元選擇器
*
會影響所有元素,但有時可能需要更具體的樣式。 權衡使用*
的便利性和潛在的效能影響。 - 繼承 (Inheritance): 某些樣式會繼承,例如
font-family
。 確保重置不會意外地影響子元素。 - 瀏覽器相容性 (Browser Compatibility): 某些重置可能需要針對特定瀏覽器進行調整,例如舊版本的 Internet Explorer。
- 可維護性 (Maintainability): 保持 reset 檔案簡潔易懂,以便日後修改。 新增註釋解釋每個規則的目的。
- 效能 (Performance): 大量的 CSS 規則會影響頁面載入效能。 只重置必要的樣式。
- 可訪問性 (Accessibility): 確保重置不會對可訪問性產生負面影響,例如移除焦點樣式。
- 框架/庫相容性 (Framework/Library Compatibility): 如果你使用 CSS 框架或庫,請確保重置與其相容,或者根據需要進行調整。 很多框架自帶 reset 或 normalize 樣式,你可能不需要再寫一個。
- Normalize.css: 考慮使用