reset.css
在HTML標(biāo)簽在瀏覽器里有默認(rèn)的樣式币砂,例如 p 標(biāo)簽有上下邊距芒率,strong標(biāo)簽有字體加粗樣式惶看,em標(biāo)簽有字體傾斜樣式。不同瀏覽器的默認(rèn)樣式之間也會(huì)有差別裂明,例如ul默認(rèn)帶有縮進(jìn)的樣式椿浓,在IE下,它的縮進(jìn)是通過margin實(shí)現(xiàn)的闽晦,而Firefox下扳碍,它的縮進(jìn)是由padding實(shí)現(xiàn)的。在切換頁(yè)面的時(shí)候尼荆,瀏覽器的默認(rèn)樣式往往會(huì)給我們帶來麻煩左腔,影響開發(fā)效率。所以解決的方法就是一開始就將瀏覽器的默認(rèn)樣式全部去掉捅儒,更準(zhǔn)確說就是通過重新定義標(biāo)簽樣式液样。“覆蓋”瀏覽器的CSS默認(rèn)屬性巧还。最最簡(jiǎn)單的說法就是把瀏覽器提供的默認(rèn)樣式覆蓋掉鞭莽!這就是CSS reset。
normalize.css
Normalize.css是一種CSS reset的替代方案麸祷。Normalize.css 只是一個(gè)很小的CSS文件澎怒,但它在默認(rèn)的HTML元素樣式上提供了跨瀏覽器的高度一致性。相比于傳統(tǒng)的CSS reset阶牍,Normalize.css是一種現(xiàn)代的喷面、為HTML5準(zhǔn)備的優(yōu)質(zhì)替代方案。Normalize.css現(xiàn)在已經(jīng)被用于Twitter Bootstrap走孽、HTML5 Boilerplate惧辈、GOV.UK、Rdio磕瓷、CSS Tricks 以及許許多多其他框架盒齿、工具和網(wǎng)站上。
Normalize vs Reset
1. Normalize.Css 保護(hù)了有價(jià)值的默認(rèn)值
Reset通過為幾乎所有的元素施加默認(rèn)樣式困食,強(qiáng)行使得元素有相同的視覺效果边翁。相比之下,Normalize.css保持了許多默認(rèn)的瀏覽器樣式硕盹。這就意味著你不用再為所有公共的排版元素重新設(shè)置樣式符匾。當(dāng)一個(gè)元素在不同的瀏覽器中有不同的默認(rèn)值時(shí),Normalize.css會(huì)力求讓這些樣式保持一致并盡可能與現(xiàn)代標(biāo)準(zhǔn)相符合瘩例。
2. Normalize.Css 修復(fù)了瀏覽器的Bug
它修復(fù)了常見的桌面端和移動(dòng)端瀏覽器的bug待讳。這往往超出了Reset所能做到的范疇芒澜。關(guān)于這一點(diǎn),Normalize.css修復(fù)的問題包含了HTML5元素的顯示設(shè)置创淡、預(yù)格式化文字的font-size問題、在IE9中SVG的溢出南吮、許多出現(xiàn)在各瀏覽器和操作系統(tǒng)中的與表單相關(guān)的bug琳彩。
3. Normalize.Css 不會(huì)讓你的調(diào)試工具變的雜亂
使用Reset最讓人困擾的地方莫過于在瀏覽器調(diào)試工具中大段大段的繼承鏈。在Normalize.css中就不會(huì)有這樣的問題部凑。
4. Normalize.Css 是模塊化的
這個(gè)項(xiàng)目已經(jīng)被拆分為多個(gè)相關(guān)卻又獨(dú)立的部分露乏,這使得你能夠很容易也很清楚地知道哪些元素被設(shè)置了特定的值。因此這能讓你自己選擇性地移除掉某些永遠(yuǎn)不會(huì)用到部分(比如表單的一般化)涂邀。
5. Normalize.Css 擁有詳細(xì)的文檔
Normalize.css的代碼基于詳細(xì)而全面的跨瀏覽器研究與測(cè)試瘟仿。這個(gè)文件中擁有詳細(xì)的代碼說明并在Github Wiki中有進(jìn)一步的說明。這意味著你可以找到每一行代碼具體完成了什么工作比勉、為什么要寫這句代碼劳较、瀏覽器之間的差異,并且你可以更容易地進(jìn)行自己的測(cè)試浩聋。