国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于CSS Reset 那些事(二)之 Normalize.css 源碼解讀

qujian / 951人閱讀

摘要:前言上一章節(jié)介紹了的歷史,最后對(duì)做了簡(jiǎn)單的了解,所以從這節(jié)開始對(duì)源碼進(jìn)行注釋翻譯與解讀,盡可能從最根本性的問題了解它在幫我們做什么回顧關(guān)于那些事一之歷史演變與源碼解讀前面講到的分模塊解讀,就是先黏貼一段源碼,然后根據(jù)官方提供的注釋進(jìn)行翻譯整

前言

上一章節(jié)介紹了CSS Reset的歷史,最后對(duì)Normalize.css做了簡(jiǎn)單的了解,所以從這節(jié)開始對(duì)源碼進(jìn)行注釋翻譯與解讀,盡可能從最根本性的問題了解它在幫我們做什么?

回顧:關(guān)于CSS Reset 那些事(一)之 歷史演變與Normalize.css

Normalize 源碼解讀

前面講到的分模塊解讀,就是先黏貼一段源碼,然后根據(jù)官方提供的注釋進(jìn)行翻譯整理,盡可能提供案例解析,然后再次進(jìn)行整理總結(jié),如果你有疑問,可以留言一起交流。

源碼地址:https://github.com/necolas/normalize.css/blob/master/normalize.css
源碼版本:v3.0.3

html與body 元素
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

設(shè)置全局的字體為sans-serif,關(guān)于中文字體的設(shè)置可參考 Amaze UI

防止 iOS 橫屏字號(hào)放大,同時(shí)保證在PC上 zoom 功能正常

第2個(gè)問題場(chǎng)景是這樣,蘋果IOS設(shè)備調(diào)整后會(huì)自動(dòng)調(diào)整文字的大小,按照蘋果的意圖是為了提升用戶體驗(yàn),比如豎屏狀態(tài)下是14px,轉(zhuǎn)換為橫屏?xí)r就變成了20px,把text-size-adjust:100%就不會(huì)調(diào)整字體大小了。

如果把值設(shè)置為"text-size-adjust:none",那么就會(huì)導(dǎo)致用戶無法放大縮小字體了。

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

修復(fù)瀏覽器默認(rèn)邊距,統(tǒng)一效果

HTML5 元素 display definitions
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

修復(fù) IE 8/9,HTML5新元素不能正確顯示的問題,定義為block的元素

修復(fù) IE 10/11,detailssummary 定義為 block 的元素

修復(fù) IE 11,main定義為 block 的元素

這個(gè)問題想必大家都已經(jīng)非常清楚,當(dāng)?shù)桶姹緸g覽器遇到不識(shí)別的元素時(shí),會(huì)默認(rèn)把他們當(dāng)成內(nèi)聯(lián)元素(inline),這里重新定義成為block元素。

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

修復(fù) IE 8/9,HTML5新元素不能正確顯示的問題,定義為inline-block元素

修復(fù)Chrome, Firefox, 和Opera的progress元素沒有以baseline垂直對(duì)齊

progress是HTML5的新標(biāo)簽,可以定義進(jìn)度條,但是它Chrome, Firefox, 和Opera并沒有已baseline垂直對(duì)齊。

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

對(duì)不支持controls屬性的瀏覽器,audio元素給以隱藏

移除iOS5設(shè)備中多余的高度

在IE8之前的瀏覽器是不支持controls屬性,這里的辦法是直接隱藏該元素

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

修復(fù) IE 7/8/9,F(xiàn)irefox 3 和 Safari 4 中hidden屬性不起作用的問題

在 IE,Safari,F(xiàn)irefox 22- 中隱藏template元素

template標(biāo)簽用于HTML模板,大家應(yīng)該都是用過HTML模版開發(fā)頁面,這個(gè)標(biāo)簽是按照實(shí)際需求添加的,但是模板又不能在界面上顯示,所以這里統(tǒng)一了樣式,兼容舊瀏覽器。

鏈接 Links
/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background-color: transparent;
}

去掉 IE 10+ 點(diǎn)擊鏈接時(shí)的灰色背景

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */

a:active,
a:hover {
  outline: 0;
}

去掉點(diǎn)擊時(shí)的outline焦點(diǎn)框,同時(shí)保證使用鍵盤可以顯示焦點(diǎn)框,這個(gè)操作針對(duì)所有瀏覽器

語義化文本標(biāo)簽 Text-level semantics
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */

abbr[title] {
  border-bottom: 1px dotted;
}

修正abbr元素在 Firefox 外其他瀏覽器沒有下劃線的問題

語義abbr標(biāo)簽是表示簡(jiǎn)稱或縮寫,自身的title屬性是完整版,但是此標(biāo)簽在Firefox下默認(rèn)有下邊框,而其他瀏覽器中沒有,這里統(tǒng)一了樣式。

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */

b,
strong {
  font-weight: bold;
}

Firefox3+,Safari4/5 和 Chrome 中統(tǒng)一設(shè)置為粗體

Firefox 3+, Safari 和 Chrome 給bstrong設(shè)置的屬性是bolder,而不是bold,這里統(tǒng)一了樣式。

/**
 * Address styling not present in Safari and Chrome.
 */

dfn {
  font-style: italic;
}

修正 Safari5 和 Chrome 中沒有樣式的問題

dfn 標(biāo)簽可標(biāo)記那些對(duì)特殊術(shù)語或短語的定義,在Safari 和Chrome 里不是斜體,在這里統(tǒng)一了樣式。

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

修復(fù) Firefox 4+,Safari 5 和 Chrome 中sectionarticle內(nèi)的h1字體大小

/**
 * Address styling not present in IE 8/9.
 */

mark {
  background: #ff0;
  color: #000;
}

修復(fù) IE 6/9, Safari 5 和 Chrome中樣式不呈現(xiàn)的問題

mark標(biāo)簽用來突出顯示部分文本,設(shè)置后會(huì)有一個(gè)高亮背景,但是此標(biāo)簽是HTML5中的新標(biāo)簽,在低版本瀏覽器并不識(shí)別,所以需要重置樣式。


/** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; }

在所有瀏覽器中統(tǒng)一small的字體大小

small標(biāo)簽在 HTML 4.01 就已經(jīng)存在,HTML5 中增強(qiáng)了它的寓意,表示旁注信息,不過此標(biāo)簽在各個(gè)瀏覽器中呈現(xiàn)的字體大小不一樣,在這里做了統(tǒng)一

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

防止所有瀏覽器中的subsup影響行高

supsub兩個(gè)標(biāo)簽是用來表示上標(biāo)和下標(biāo),據(jù)HTML標(biāo)準(zhǔn)中對(duì)small,subsup的大小要求都是smaller,但是如上所示normalize.csssmall設(shè)的是80%,而subsup卻是75%,所以為了保持一致,且不影響其他元素的行高,把兩者的line-height設(shè)為0,然后設(shè)置它的垂直以baseline開始,設(shè)置topbottom手動(dòng)設(shè)置兩者偏移量

內(nèi)嵌元素 Embedded content
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */

img {
  border: 0;
}

去除 IE6-9 和 Firefox 3 中a內(nèi)部img元素默認(rèn)的邊框

在舊版本的瀏覽器中,圖片默認(rèn)會(huì)有一個(gè)奇丑無比的藍(lán)色邊框,這這里進(jìn)行清除,統(tǒng)一樣式。

/**
 * Correct overflow not hidden in IE 9/10/11.
 */

svg:not(:root) {
  overflow: hidden;
}

修復(fù) IE9 中的overflow的怪異表現(xiàn)

群組元素 Grouping content
/**
 * Address margin not present in IE 8/9 and Safari.
 */

figure {
  margin: 1em 40px;
}

修復(fù) IE 8/9、Safari中margin失效

figure 是HTML5的新標(biāo)簽,用做文檔插圖,但它在 IE 8/9 and Safari 中的默認(rèn)margin失效,這里做了統(tǒng)一設(shè)置。

/**
 * Address differences between Firefox and other browsers.
 */

hr {
  box-sizing: content-box;
  height: 0;
}

修正 Firefox 和其他瀏覽器之間的差異

在 Firefox 中,hr元素的默認(rèn)樣式很多,和其它瀏覽器主要的差異有兩點(diǎn):
1.設(shè)置了height2px;
2.box-sizingborder-box;
此樣式對(duì)這兩個(gè)問題進(jìn)行重置,進(jìn)行統(tǒng)一

/**
 * Contain overflow in all browsers.
 */

pre {
  overflow: auto;
}

標(biāo)簽設(shè)置滾動(dòng)條,內(nèi)容溢出時(shí)出現(xiàn)

大部分瀏覽器的preoverflow的時(shí)候會(huì)直接溢出去,這里加上overflow:auto讓它出現(xiàn)滾動(dòng)條

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

用于修復(fù) Safari 5 和 Chrome 中奇怪的字體設(shè)置,統(tǒng)一字體樣式

總結(jié)

此章節(jié)我們對(duì)Normalize.css中設(shè)置的 html與body元素,HTML5元素,鏈接,語義化文本,內(nèi)嵌元素,群組元素 的源碼進(jìn)行詳細(xì)的解讀,發(fā)現(xiàn)正如其說的一樣,它不僅僅幫我們修復(fù)了瀏覽器的默認(rèn)bug,還保留了許多標(biāo)簽的默認(rèn)值,尤其是語義化標(biāo)簽,堅(jiān)持他們存在的意義。

由于源碼部分過長(zhǎng),所以對(duì)于源碼的解析會(huì)分為兩節(jié),下一節(jié)我們繼續(xù)來介紹:

表單:表單往往存在很多問題,如常見的各種不繼承問題,這這里都會(huì)得到修復(fù)
表格:表格的默認(rèn)邊距和邊框真的很丑,需要修復(fù)修復(fù)

下一節(jié)會(huì)完成所有模塊對(duì)normalize.css源碼解讀,屆時(shí)會(huì)整理一份normalize-zh.css中文注釋的版本上傳至Github,供大家參考使用,敬請(qǐng)期待...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/111079.html

相關(guān)文章

  • 關(guān)于CSS Reset 那些 Normalize.css 源碼解讀

    摘要:前言上一章節(jié)介紹了的歷史,最后對(duì)做了簡(jiǎn)單的了解,所以從這節(jié)開始對(duì)源碼進(jìn)行注釋翻譯與解讀,盡可能從最根本性的問題了解它在幫我們做什么回顧關(guān)于那些事一之歷史演變與源碼解讀前面講到的分模塊解讀,就是先黏貼一段源碼,然后根據(jù)官方提供的注釋進(jìn)行翻譯整 前言 上一章節(jié)介紹了CSS Reset的歷史,最后對(duì)Normalize.css做了簡(jiǎn)單的了解,所以從這節(jié)開始對(duì)源碼進(jìn)行注釋翻譯與解讀,盡可能從最...

    Code4App 評(píng)論0 收藏0
  • 關(guān)于CSS Reset 那些(三) Normalize-zh.css 出爐

    摘要:本章節(jié)會(huì)完成所有源代碼翻譯整理,最終會(huì)整理出中文版本并開源至供大家交流使用?,F(xiàn)已將源代碼開源至項(xiàng)目地址源碼解讀上章節(jié)對(duì)與元素,元素,鏈接,語義化文本,內(nèi)嵌元素,群組元素等源碼內(nèi)容已經(jīng)做了解析,這章節(jié)繼續(xù)完成表單,表格部分。 前言 上一章節(jié)我們對(duì)Normalize.css源碼進(jìn)行解析,但是由于其代碼過長(zhǎng)導(dǎo)致不宜瀏覽,所以表單Forms,表格Table部分內(nèi)容放在此章節(jié)介紹。本章節(jié)會(huì)完成...

    harryhappy 評(píng)論0 收藏0
  • 關(guān)于CSS Reset 那些(一) 歷史演變與Normalize.css

    摘要:下面開始對(duì)進(jìn)行簡(jiǎn)單的介紹,關(guān)于兩者的差異區(qū)別可以看問答平臺(tái)使用遇到的問題和有什么本質(zhì)區(qū)別沒簡(jiǎn)單介紹關(guān)于對(duì)的介紹,這里引用咀嚼之味針對(duì)官方介紹翻譯的的中文版本。目前已經(jīng)成為了的替代方案是無可爭(zhēng)議的事情了。 前言 近期在翻閱陳舊的歷史資料,整理之前飽受爭(zhēng)議的CSS Reset問題,不過好像十多年過去,現(xiàn)在大家統(tǒng)一了口徑,紛紛推薦使用Normalize.css,包括Bootstrap都進(jìn)行...

    idealcn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

qujian

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<