如何做默認(rèn)樣式重置呛讲?resetting 和 normalizing 之間有什么區(qū)別?

大家好,我是IT修真院北京分院第21期的學(xué)員楊夢桐贝搁,今天的這篇文章刃宵,主要關(guān)于瀏覽器樣式的重置。

到目前為止徘公,市面上的五大主流瀏覽器為IE牲证、Chrome、Firefox关面、Safari和Opera坦袍。當(dāng)這些瀏覽器在載入html文件的時(shí)候,如果我們沒有給html元素設(shè)置樣式等太,瀏覽器會(huì)基于自己的默認(rèn)樣式對其中的一些標(biāo)簽進(jìn)行頁面布局捂齐,但是由于瀏覽器的默認(rèn)樣式不同,所以會(huì)導(dǎo)致實(shí)現(xiàn)頁面布局的方式不同缩抡。比如有一些瀏覽器通過margin實(shí)現(xiàn)內(nèi)容的間距奠宜,而另一些瀏覽器通過padding實(shí)現(xiàn)。而且例如如滾動(dòng)條瞻想,按鈕压真,選擇框等元素的默認(rèn)CSS樣式,也不近相同蘑险。這樣就導(dǎo)致同一個(gè)頁面在不同瀏覽器載入后顯示的效果不同滴肿。為了盡可能避免這種情況,我們可以通過使用CSS樣式重置這一方式佃迄,使網(wǎng)頁展示效果保持一致泼差。

以下是一些瀏覽器的默認(rèn)樣式,從中甚至可以看出呵俏,同一瀏覽器的不同版本也會(huì)有一些樣式差異堆缘。

webkit瀏覽器默認(rèn)樣式:https://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css

火狐瀏覽器默認(rèn)樣式:https://hg.mozilla.org/mozilla-central/file/tip/layout/style/res/html.css

IE瀏覽器不同版本默認(rèn)樣式對比表:http://developer.doyoe.com/default-style/

最早的一份CSS reset來自Tantek的undohtml.css,很簡單的代碼普碎,Tantek 根據(jù)自己的需要吼肥,對瀏覽器的默認(rèn)樣式進(jìn)行了一些重置。其余一些有名的CSS reset有業(yè)界領(lǐng)袖Eric Meyer的reset或是Tripoli Reset∷娉#現(xiàn)在潜沦,基于完美的實(shí)現(xiàn)頁面在不同瀏覽器的顯示這一需求,CSS重置這一方式被普遍地運(yùn)用在頁面布局中绪氛。

首先唆鸡,我們來了解一下CSS reset。

1. 什么是CSS Reset枣察?

我們可以把它叫做CSS重設(shè)争占,也有人叫做CSS復(fù)位燃逻、默認(rèn)CSS、CSS重置等臂痕。CSS重設(shè)就是由于各種瀏覽器解釋CSS樣式的初始值有所不同伯襟,導(dǎo)致設(shè)計(jì)師在沒有定義某個(gè)CSS屬性時(shí),不同的瀏覽器會(huì)按照自己的默認(rèn)值來為沒有定義的樣式賦值握童,所以我們要先定義好一些CSS樣式姆怪,去“覆蓋”瀏覽器的CSS默認(rèn)屬性,來讓所有瀏覽器都按照同樣的規(guī)則解釋CSS澡绩,這樣就能避免發(fā)生這種問題稽揭。

2.如何實(shí)現(xiàn)CSS Reset?

CSS Reset的目的是讓各個(gè)瀏覽器的CSS樣式有一個(gè)統(tǒng)一的基準(zhǔn)肥卡,而實(shí)現(xiàn)這一基準(zhǔn)最主要的方式就是“清零”溪掀,即將所有的默認(rèn)樣式直接清除。最簡單的方法是直接使用

* {

outline: 0;

padding: 0;

margin: 0;

border: 0;

}

其中 * 就是常說的通配符步鉴,意思是“所有的”揪胃。使用 * 代表所有的標(biāo)簽或元素,就叫做通配符選擇器氛琢。由于 * 會(huì)匹配所有的元素喊递,所以當(dāng)瀏覽器解析到 *時(shí),會(huì)將頁面內(nèi)的所有標(biāo)簽都進(jìn)行如上的樣式重置艺沼,這樣會(huì)影響網(wǎng)頁渲染的時(shí)間册舞,所以使用 * 時(shí)一定要慎重,盡量不要在樣式重置時(shí)應(yīng)用 * 障般。

除了CSS reset之外,還有一種樣式重置的方式就是使用Normalize.css盛杰。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)站上。我們可以在這里查看它的源碼:https://github.com/necolas/normalize.css抹锄,關(guān)于源碼的中文注釋逆瑞,可以查看:http://www.cnblogs.com/shrekuu/archive/2013/06/06/normalize-cn.html

相較CSS reset荠藤,Normalize有一些自己的優(yōu)勢。

1. Normalize.css沒有重置所有的屬性获高,所以一些默認(rèn)公用的屬性無需自己再手動(dòng)添加哈肖。

2. Normalize.css修復(fù)了瀏覽器的bug,修復(fù)的問題包含了HTML5元素的顯示設(shè)置念秧、預(yù)格式化文字的font-size問題淤井、在IE9中SVG的溢出、許多出現(xiàn)在各瀏覽器和操作系統(tǒng)中的與表單相關(guān)的bug摊趾。

3. Normalize.css避免了瀏覽器調(diào)試工具中的大段繼承鏈庄吼,

4. Normalize.css 是模塊化的并且擁有詳細(xì)的文檔,方便進(jìn)行自己的測試严就。

如果需要進(jìn)行瀏覽器的默認(rèn)樣式重置总寻,則可以根據(jù)自己的需要進(jìn)行設(shè)置,或者寫一段適合自己的修改默認(rèn)樣式的代碼梢为。要避免無意義的重置渐行,盡可能讓自己的代碼簡潔有效優(yōu)化好。

參考文獻(xiàn)

張鑫旭-《CSS reset的重新審視 – 避免樣式重置》:http://www.zhangxinxu.com/wordpress/2010/04/css-reset%E7%9A%84%E9%87%8D%E6%96%B0%E5%AE%A1%E8%A7%86-%E9%81%BF%E5%85%8D%E6%A0%B7%E5%BC%8F%E9%87%8D%E7%BD%AE/

來铸董,讓我們談一談 Normalize.css:http://jerryzou.com/posts/aboutNormalizeCss/

Normalize.css 與傳統(tǒng)的 CSS Reset 有哪些區(qū)別祟印?:https://www.zhihu.com/question/20094066/answer/25004727

PPT :https://ptteng.github.io/PPT/PPT/css-71-CSS_Reset&Normalize.html#/

視頻鏈接:https://v.qq.com/x/page/d0518tdfd5t.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粟害,隨后出現(xiàn)的幾起案子蕴忆,更是在濱河造成了極大的恐慌,老刑警劉巖悲幅,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件套鹅,死亡現(xiàn)場離奇詭異,居然都是意外死亡汰具,警方通過查閱死者的電腦和手機(jī)卓鹿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來留荔,“玉大人吟孙,你說我怎么就攤上這事【鄣” “怎么了杰妓?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碘勉。 經(jīng)常有香客問我巷挥,道長,這世上最難降的妖魔是什么恰聘? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任句各,我火速辦了婚禮吸占,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凿宾。我一直安慰自己矾屯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布初厚。 她就那樣靜靜地躺著件蚕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪产禾。 梳的紋絲不亂的頭發(fā)上排作,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音亚情,去河邊找鬼妄痪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛楞件,可吹牛的內(nèi)容都是我干的衫生。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼土浸,長吁一口氣:“原來是場噩夢啊……” “哼罪针!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起黄伊,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤泪酱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后还最,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墓阀,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年憋活,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岂津。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悦即,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出橱乱,到底是詐尸還是另有隱情辜梳,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布泳叠,位于F島的核電站作瞄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏危纫。R本人自食惡果不足惜宗挥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一乌庶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧契耿,春花似錦瞒大、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踢械,卻和暖如春酗电,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背内列。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工撵术, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人话瞧。 一個(gè)月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓嫩与,卻偏偏與公主長得像,于是被迫代替她去往敵國和親移稳。 傳聞我的和親對象是個(gè)殘疾皇子蕴纳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容