WEB標(biāo)準(zhǔn)之CSS 打造自己的reset.css
發(fā)布時間:2010-03-15 13:16:21 作者:佚名
我要評論

每每有新項(xiàng)目,第一步就是應(yīng)當(dāng)使用一個reset.css來重置樣式。濫用不如不用,直接拿個現(xiàn)成的reset.css過來將導(dǎo)致后期各種離奇bug的發(fā)生。
0,引言
每每有新項(xiàng)目,第一步就是應(yīng)當(dāng)使用一個reset.css來重置樣式。濫用不如不用,直接拿個現(xiàn)成的reset.css過來將導(dǎo)致后期各種離奇bug的發(fā)生。
所以最好還是自己寫一個reset.css,并且要明白每一條 reset都是用來做什么的。
reset.css本意就是重置樣式,我始終建議把.clearfix放入layout.css,而把h1、h2之類的定義放進(jìn)typography.css。
具體如何規(guī)劃網(wǎng)站CSS結(jié)構(gòu),不在文本討論之列,可以參考Smashing Magazine上的文章,國內(nèi)有差強(qiáng)人意的中文譯版。
注意,本文把reset分成了兩個部分,一個是純reset.css,可以用于任何項(xiàng)目。另一個是用于特定項(xiàng)目的“reset”,自定義修改的內(nèi)容,這 些內(nèi)容可以放在layout.css、typography.css之類的文件中,他們共同導(dǎo)入到一個base.css形成一個項(xiàng)目的基礎(chǔ)樣式。
本文就是來介紹如何寫一個合適所有項(xiàng)目的通用的reset.css,以及介紹在設(shè)置玩reset.css之后需要針對不同項(xiàng)目要首先要設(shè)置的內(nèi)容。
1,基礎(chǔ)
牛頓是站在巨人伽利略的肩膀上的,我們也可以這么做。首先我們要選定一個前進(jìn)的基礎(chǔ)。
請永遠(yuǎn)不要使用
* { margin: 0; padding: 0; }
這問題太多了,在此不多加表述。
目前比較流行的有Eric Meyer的重置樣式和YUI的重置樣式。另有Condensed Meyer Reset簡化Eric Meyer的樣式。有趣的是,Eric的重置樣式也是源于YUI的。而那份簡化版又把Eric的樣式簡化回YUI的樣式了 。但同時,糟糕的是,網(wǎng)上流傳的比較廣的(尤其是國內(nèi))都不是最新的版本。
上面兩個頁面里直接看到的都不是最新的,Eric專門為有 一個reset.css頁面。而YUI當(dāng)前版本(2.7.0)的reset.css實(shí)際地址里,比上面的頁面中還多一些東西。此外,我們還可以基于一些常 見的框架,比較著名的比如Blueprint或者Elements CSS Framework(這個的reset也是源自于Eric Meyer的)。
OK,準(zhǔn)備工作就差不多了。以上這些都可以作為參考資料來組織我們自己的reset。我這里主要采用YUI,兼帶Eric的reset。
2,默認(rèn)色彩
對于頁面是不是有默認(rèn)背景色和前景色,YUI和Eric有著不同的看法。
YUI重置背景色為白色而文字顏色為黑色。
html {
color: #000;
background: #FFF;
}
而Eric在當(dāng)前最新版中讓所有顏色為透明,他認(rèn)為透明才是最原始的顏色。雖然他曾一度認(rèn)為也應(yīng)當(dāng)設(shè)置白色背景色、黑色文字顏色。至于最后為什么改了,Eric并沒有給出具體理由。
這個問題我基本認(rèn)為是用戶自定義的更重要還是你的設(shè)計(jì)更重要的問題。我個人的觀點(diǎn)是,如果你的設(shè)計(jì)本身就是白色背景,那么不要設(shè)置背景。一小部分中高水平的用戶,他們會自定義網(wǎng)頁默認(rèn)背景色。
設(shè)置成他們喜歡的背景色,比如淺藍(lán)色。基本常見的瀏覽器都提供了這個簡單的功能。而我們的背景色重置則會破壞用戶的選擇——盡管這樣能保證你的設(shè)計(jì)原汁原味的呈現(xiàn)給所有用戶。當(dāng)然我知道,更高端的用戶會用Stylish之類的Firefox擴(kuò)展來自定義頁面。
但不得不說,只會用“選項(xiàng)”來調(diào)背景色的用戶更多,不是么?而同時,如果設(shè)計(jì)本身就有其他背景色,比如黑色、藍(lán)色、綠色之類的,OK,這些設(shè)計(jì)當(dāng)然可以 設(shè)置背景色。但請不要放進(jìn)reset.css里。這里是重置樣式的地方,不是你設(shè)計(jì)的地方。請把你的設(shè)計(jì)放在更廣袤的土地上。
所以,簡單說來,NO,不要在reset中設(shè)置背景色。
那么,文字顏色呢?原則上來說,也是不應(yīng)該設(shè)置文字顏色的。但是IE中的表單元素中l(wèi)egend這個對象比較特別,跟主題結(jié)合的比較緊密。legend會默認(rèn)有自己的顏色(跟當(dāng)前的主題有關(guān))而不會繼承父元素的顏色(即便設(shè)了color:inherit;)。
從某些角度來說,可以想當(dāng)然地認(rèn)為設(shè)置字體顏色人數(shù)遠(yuǎn)小于設(shè)置背景色的人數(shù);以及認(rèn)為就算設(shè)置了背景色,人們看到legend元素是黑色的也不會覺得奇怪。因此,YUI在其reset中設(shè)置了legend {color: #000;}是無可厚非的。
但反過來說,把這個放到typography.css或者form.css里豈不是更好?不同的頁面設(shè)計(jì),其對legend的色彩要求很可能是不同的, 放在reset.css里重復(fù)定義是沒有必要的。因此這條CSS規(guī)則可以作為在reset.css之后首先應(yīng)當(dāng)設(shè)置的規(guī)則。
3,padding和margin
曾經(jīng)一度流行的* { margin: 0; padding: 0; }也就是出于這個目的。讓各個元素的padding和margin都?xì)w零,尤其是那些h1和p以及ul/ol/li之類的元素,還有,body本身也是有 margin的。清除元素的padding和margin是很有用的。
YUI這樣做:
body, div, dl, dt, dd, ul, ol, li,
h1, h2, h3, h4, h5, h6, pre, code,
form, fieldset, legend, input, button,
textarea, p, blockquote, th, td {
margin: 0;
padding: 0;
}
而Eric這樣做:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
可以看到,Eric把幾乎所有的元素都寫上了規(guī)則。而YUI只把有padding和margin的元素清空樣式,而其他元素則不動。我個人比較偏好 YUI的做法,因?yàn)樗@樣可以避免給一些無關(guān)元素帶上不必要的樣式。導(dǎo)致元素過多時的性能下降。但Eric的也有可取之處,他這樣寫,整個 reset.css可以小上不少字節(jié)。對服務(wù)器的壓力會小一些。你怎么用呢?看你自己喜好了。
4,邊框
YUI里:
fieldset, img {
border: 0;
}
abbr, acronym {
border: 0;
font-variant: normal;
}
Eric已經(jīng)在上一條中把所有的邊框都清掉了,還是推薦用YUI的,理由同上。
5,外邊框
這個就是元素獲取焦點(diǎn)時的虛線框,在ie之外的瀏覽器上可以像下面Eric做的那樣,通過設(shè)置outline來消除。
/* remember to define focus styles! */
:focus {
outline: 0;
}
而YUI則沒有設(shè)置這一條。而在Eric的樣式中,可以看到Eric的提醒:務(wù)必重新定義獲取焦點(diǎn)后的樣式!
這點(diǎn)其實(shí)很重要,出于可訪問性的角度出發(fā),那些不便于使用鼠標(biāo)的人基本上都是用tab導(dǎo)航來瀏覽網(wǎng)頁的。獲取焦點(diǎn)的元素有特定樣式的話可以極大幫助這類群體的用戶。
從通用性角度來說,YUI那樣不加這條比較好,畢竟沒多少人會自定義焦點(diǎn)樣式。但從一個reset.css來說,應(yīng)當(dāng)還是加上去比較好。畢竟是為了重置所有樣式而寫的reset.css,不能留下缺憾。因此這條可以作為reset.css之后及早定義的規(guī)則。
6,字體樣式(font style/weight/size/variant)
YUI里,分成了多條:
address, caption, cite, code, dfn,
em, strong, th, var, optgroup {
font-style: inherit;
font-weight: inherit;
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
font-weight: normal;
}
abbr, acronym {
border: 0;
font-variant: normal;
}
input, button, textarea,
select, optgroup, option {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
/*@purpose To enable resizing for IE */
/*@branch For IE6-Win, IE7-Win */
input, button, textarea, select {
*font-size: 100%;
}
Eric則在他最終版的reset中去掉了關(guān)于這些的樣式重置,只保留了 font-size: 100%; 同樣他沒有給出具體理由。
但通常情況下,我認(rèn)為還是重置一下這些樣式好,比如strong元素,很多時候只是語義而已,并非希望他真的加粗??赡軙斜尘吧蛘咂渌绞絹韽?qiáng)調(diào)。
而之所以這里都用了inherit這個繼承屬性而不是定義 font-weight: normal; 可以在 Eric 先前的reset文章中看到。這是為了防止——父元素字體加粗了,而沒有一個子元素繼承加粗屬性(因?yàn)樵O(shè)置了normal)——這種情況的發(fā)生。
此外,對于h1-h6的字體大小定義,建議放到專門的typography.css里,不建議放在reset.css里。所以這里我同樣傾向于用YUI的策略,全部重置。
7,行高(line-height)
對于行高,YUI并沒有給出重置定義,而Eric則給出了重置:
body {
line-height: 1;
}
行高默認(rèn)所有元素都會繼承的,所以給body設(shè)置行高為1就足夠了。通常行高設(shè)為1時候,英文照常閱讀,但中文就無法閱讀了,行間距過于緊密導(dǎo)致容易看錯行。通常在中文環(huán)境下得設(shè)置1.4到1.5才能是用戶正常閱讀。
我建議是1.5,這樣算出來的值也是整數(shù)。比如字體大小12px的時候行高是 18px,字體大小16px時行高24px??雌饋硪矔容^舒服。
8,列表樣式
YUI用了:
li {
list-style: none;
}
Eric用了:
ol, ul {
list-style: none;
}
盡管我沒有測試出YUI的有什么問題,但我始終覺得設(shè)置ol和ul會比較穩(wěn)妥。而且,波及的元素更少,性能應(yīng)該更高一點(diǎn)。雖然下載量會多3字節(jié)。
9,表格元素
在表格方面,都比較統(tǒng)一。均是:
/* tables still need 'cellspacing="0"' in the markup */
table {
border-collapse: collapse;
border-spacing: 0;
}
Eric還提醒到,需要在html中設(shè)置cellspacing=”0″ 來達(dá)到完美重置效果~
但此外YUI還設(shè)置了
caption, th {
text-align: left;
}
讓caption和th元素不要居中。作為重置,是可取的。建議添加此規(guī)則。
10,上下標(biāo)以及baseline
YUI寫成
sup {
vertical-align: baseline;
}
sub {
vertical-align: baseline;
}
似乎沒有優(yōu)化,不知道為何沒有寫到一起去。而Eric則在最開始那條中就已經(jīng)定義。而其中的問題是,YUI這樣定義了,但沒有重置字體大小,這點(diǎn)是有所遺憾的。既然是重置樣式,就徹底一些,所以建議改成這樣的:
sup, sub {
font-size: 100%;
vertical-align: baseline;
}
同樣對于Eric把所有元素都放到了Baseline上,包括上標(biāo)下標(biāo)。Eric的解釋是,強(qiáng)制讓設(shè)計(jì)師精確定位這些元素的垂直偏移。
11,插入和刪除(ins/del)
對于這個問題,YUI直接清除了ins的下劃線和del的刪除線這兩個文本裝飾:
del, ins {
text-decoration: none;
}
而Eric保留了刪除線:
/* remember to highlight inserts somehow! */
ins {
text-decoration: none;
}
del {
text-decoration: line-through;
}
如何取舍?我選擇Eric的,為什么我這里不追求完美的樣式重置了呢?很簡單,我這個reset的目標(biāo)是為了讓我們寫頁面的時候盡量避免瀏覽器默認(rèn)樣 式,以及不同瀏覽器之間默認(rèn)樣式差異帶來的問題。而del元素刪除線的文本裝飾,我相信沒有人會反對的。有人會加上其他樣式,比如字體變淡之類的,但對于 del如此強(qiáng)語義的元素來說,沒有什么比用刪除線更能表達(dá)含義的了。而不像上面那個focus樣式,未必人人喜歡虛線框。
所以,這里我考慮采納Eric的重置樣式。同時別忘了給ins元素在等下也添加一些樣式。
12,引用元素的引號
某些瀏覽器中,q或者blockquote前后會出現(xiàn)引號。這個并不是誰都喜歡的。所以需要重置他。
YUI的比較簡單,只重置了q:
q:before,
q:after {
content: '';
}
而Eric則比較周到,把q和blockquote都重置了。
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
OK,就決定用Eric的了,對于樣式重置,細(xì)致一點(diǎn)周到一點(diǎn)總沒有錯。
每每有新項(xiàng)目,第一步就是應(yīng)當(dāng)使用一個reset.css來重置樣式。濫用不如不用,直接拿個現(xiàn)成的reset.css過來將導(dǎo)致后期各種離奇bug的發(fā)生。
所以最好還是自己寫一個reset.css,并且要明白每一條 reset都是用來做什么的。
reset.css本意就是重置樣式,我始終建議把.clearfix放入layout.css,而把h1、h2之類的定義放進(jìn)typography.css。
具體如何規(guī)劃網(wǎng)站CSS結(jié)構(gòu),不在文本討論之列,可以參考Smashing Magazine上的文章,國內(nèi)有差強(qiáng)人意的中文譯版。
注意,本文把reset分成了兩個部分,一個是純reset.css,可以用于任何項(xiàng)目。另一個是用于特定項(xiàng)目的“reset”,自定義修改的內(nèi)容,這 些內(nèi)容可以放在layout.css、typography.css之類的文件中,他們共同導(dǎo)入到一個base.css形成一個項(xiàng)目的基礎(chǔ)樣式。
本文就是來介紹如何寫一個合適所有項(xiàng)目的通用的reset.css,以及介紹在設(shè)置玩reset.css之后需要針對不同項(xiàng)目要首先要設(shè)置的內(nèi)容。
1,基礎(chǔ)
牛頓是站在巨人伽利略的肩膀上的,我們也可以這么做。首先我們要選定一個前進(jìn)的基礎(chǔ)。
請永遠(yuǎn)不要使用
* { margin: 0; padding: 0; }
這問題太多了,在此不多加表述。
目前比較流行的有Eric Meyer的重置樣式和YUI的重置樣式。另有Condensed Meyer Reset簡化Eric Meyer的樣式。有趣的是,Eric的重置樣式也是源于YUI的。而那份簡化版又把Eric的樣式簡化回YUI的樣式了 。但同時,糟糕的是,網(wǎng)上流傳的比較廣的(尤其是國內(nèi))都不是最新的版本。
上面兩個頁面里直接看到的都不是最新的,Eric專門為有 一個reset.css頁面。而YUI當(dāng)前版本(2.7.0)的reset.css實(shí)際地址里,比上面的頁面中還多一些東西。此外,我們還可以基于一些常 見的框架,比較著名的比如Blueprint或者Elements CSS Framework(這個的reset也是源自于Eric Meyer的)。
OK,準(zhǔn)備工作就差不多了。以上這些都可以作為參考資料來組織我們自己的reset。我這里主要采用YUI,兼帶Eric的reset。
2,默認(rèn)色彩
對于頁面是不是有默認(rèn)背景色和前景色,YUI和Eric有著不同的看法。
YUI重置背景色為白色而文字顏色為黑色。
html {
color: #000;
background: #FFF;
}
而Eric在當(dāng)前最新版中讓所有顏色為透明,他認(rèn)為透明才是最原始的顏色。雖然他曾一度認(rèn)為也應(yīng)當(dāng)設(shè)置白色背景色、黑色文字顏色。至于最后為什么改了,Eric并沒有給出具體理由。
這個問題我基本認(rèn)為是用戶自定義的更重要還是你的設(shè)計(jì)更重要的問題。我個人的觀點(diǎn)是,如果你的設(shè)計(jì)本身就是白色背景,那么不要設(shè)置背景。一小部分中高水平的用戶,他們會自定義網(wǎng)頁默認(rèn)背景色。
設(shè)置成他們喜歡的背景色,比如淺藍(lán)色。基本常見的瀏覽器都提供了這個簡單的功能。而我們的背景色重置則會破壞用戶的選擇——盡管這樣能保證你的設(shè)計(jì)原汁原味的呈現(xiàn)給所有用戶。當(dāng)然我知道,更高端的用戶會用Stylish之類的Firefox擴(kuò)展來自定義頁面。
但不得不說,只會用“選項(xiàng)”來調(diào)背景色的用戶更多,不是么?而同時,如果設(shè)計(jì)本身就有其他背景色,比如黑色、藍(lán)色、綠色之類的,OK,這些設(shè)計(jì)當(dāng)然可以 設(shè)置背景色。但請不要放進(jìn)reset.css里。這里是重置樣式的地方,不是你設(shè)計(jì)的地方。請把你的設(shè)計(jì)放在更廣袤的土地上。
所以,簡單說來,NO,不要在reset中設(shè)置背景色。
那么,文字顏色呢?原則上來說,也是不應(yīng)該設(shè)置文字顏色的。但是IE中的表單元素中l(wèi)egend這個對象比較特別,跟主題結(jié)合的比較緊密。legend會默認(rèn)有自己的顏色(跟當(dāng)前的主題有關(guān))而不會繼承父元素的顏色(即便設(shè)了color:inherit;)。
從某些角度來說,可以想當(dāng)然地認(rèn)為設(shè)置字體顏色人數(shù)遠(yuǎn)小于設(shè)置背景色的人數(shù);以及認(rèn)為就算設(shè)置了背景色,人們看到legend元素是黑色的也不會覺得奇怪。因此,YUI在其reset中設(shè)置了legend {color: #000;}是無可厚非的。
但反過來說,把這個放到typography.css或者form.css里豈不是更好?不同的頁面設(shè)計(jì),其對legend的色彩要求很可能是不同的, 放在reset.css里重復(fù)定義是沒有必要的。因此這條CSS規(guī)則可以作為在reset.css之后首先應(yīng)當(dāng)設(shè)置的規(guī)則。
3,padding和margin
曾經(jīng)一度流行的* { margin: 0; padding: 0; }也就是出于這個目的。讓各個元素的padding和margin都?xì)w零,尤其是那些h1和p以及ul/ol/li之類的元素,還有,body本身也是有 margin的。清除元素的padding和margin是很有用的。
YUI這樣做:
body, div, dl, dt, dd, ul, ol, li,
h1, h2, h3, h4, h5, h6, pre, code,
form, fieldset, legend, input, button,
textarea, p, blockquote, th, td {
margin: 0;
padding: 0;
}
而Eric這樣做:
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
可以看到,Eric把幾乎所有的元素都寫上了規(guī)則。而YUI只把有padding和margin的元素清空樣式,而其他元素則不動。我個人比較偏好 YUI的做法,因?yàn)樗@樣可以避免給一些無關(guān)元素帶上不必要的樣式。導(dǎo)致元素過多時的性能下降。但Eric的也有可取之處,他這樣寫,整個 reset.css可以小上不少字節(jié)。對服務(wù)器的壓力會小一些。你怎么用呢?看你自己喜好了。
4,邊框
YUI里:
fieldset, img {
border: 0;
}
abbr, acronym {
border: 0;
font-variant: normal;
}
Eric已經(jīng)在上一條中把所有的邊框都清掉了,還是推薦用YUI的,理由同上。
5,外邊框
這個就是元素獲取焦點(diǎn)時的虛線框,在ie之外的瀏覽器上可以像下面Eric做的那樣,通過設(shè)置outline來消除。
/* remember to define focus styles! */
:focus {
outline: 0;
}
而YUI則沒有設(shè)置這一條。而在Eric的樣式中,可以看到Eric的提醒:務(wù)必重新定義獲取焦點(diǎn)后的樣式!
這點(diǎn)其實(shí)很重要,出于可訪問性的角度出發(fā),那些不便于使用鼠標(biāo)的人基本上都是用tab導(dǎo)航來瀏覽網(wǎng)頁的。獲取焦點(diǎn)的元素有特定樣式的話可以極大幫助這類群體的用戶。
從通用性角度來說,YUI那樣不加這條比較好,畢竟沒多少人會自定義焦點(diǎn)樣式。但從一個reset.css來說,應(yīng)當(dāng)還是加上去比較好。畢竟是為了重置所有樣式而寫的reset.css,不能留下缺憾。因此這條可以作為reset.css之后及早定義的規(guī)則。
6,字體樣式(font style/weight/size/variant)
YUI里,分成了多條:
address, caption, cite, code, dfn,
em, strong, th, var, optgroup {
font-style: inherit;
font-weight: inherit;
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
font-weight: normal;
}
abbr, acronym {
border: 0;
font-variant: normal;
}
input, button, textarea,
select, optgroup, option {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
/*@purpose To enable resizing for IE */
/*@branch For IE6-Win, IE7-Win */
input, button, textarea, select {
*font-size: 100%;
}
Eric則在他最終版的reset中去掉了關(guān)于這些的樣式重置,只保留了 font-size: 100%; 同樣他沒有給出具體理由。
但通常情況下,我認(rèn)為還是重置一下這些樣式好,比如strong元素,很多時候只是語義而已,并非希望他真的加粗??赡軙斜尘吧蛘咂渌绞絹韽?qiáng)調(diào)。
而之所以這里都用了inherit這個繼承屬性而不是定義 font-weight: normal; 可以在 Eric 先前的reset文章中看到。這是為了防止——父元素字體加粗了,而沒有一個子元素繼承加粗屬性(因?yàn)樵O(shè)置了normal)——這種情況的發(fā)生。
此外,對于h1-h6的字體大小定義,建議放到專門的typography.css里,不建議放在reset.css里。所以這里我同樣傾向于用YUI的策略,全部重置。
7,行高(line-height)
對于行高,YUI并沒有給出重置定義,而Eric則給出了重置:
body {
line-height: 1;
}
行高默認(rèn)所有元素都會繼承的,所以給body設(shè)置行高為1就足夠了。通常行高設(shè)為1時候,英文照常閱讀,但中文就無法閱讀了,行間距過于緊密導(dǎo)致容易看錯行。通常在中文環(huán)境下得設(shè)置1.4到1.5才能是用戶正常閱讀。
我建議是1.5,這樣算出來的值也是整數(shù)。比如字體大小12px的時候行高是 18px,字體大小16px時行高24px??雌饋硪矔容^舒服。
8,列表樣式
YUI用了:
li {
list-style: none;
}
Eric用了:
ol, ul {
list-style: none;
}
盡管我沒有測試出YUI的有什么問題,但我始終覺得設(shè)置ol和ul會比較穩(wěn)妥。而且,波及的元素更少,性能應(yīng)該更高一點(diǎn)。雖然下載量會多3字節(jié)。
9,表格元素
在表格方面,都比較統(tǒng)一。均是:
/* tables still need 'cellspacing="0"' in the markup */
table {
border-collapse: collapse;
border-spacing: 0;
}
Eric還提醒到,需要在html中設(shè)置cellspacing=”0″ 來達(dá)到完美重置效果~
但此外YUI還設(shè)置了
caption, th {
text-align: left;
}
讓caption和th元素不要居中。作為重置,是可取的。建議添加此規(guī)則。
10,上下標(biāo)以及baseline
YUI寫成
sup {
vertical-align: baseline;
}
sub {
vertical-align: baseline;
}
似乎沒有優(yōu)化,不知道為何沒有寫到一起去。而Eric則在最開始那條中就已經(jīng)定義。而其中的問題是,YUI這樣定義了,但沒有重置字體大小,這點(diǎn)是有所遺憾的。既然是重置樣式,就徹底一些,所以建議改成這樣的:
sup, sub {
font-size: 100%;
vertical-align: baseline;
}
同樣對于Eric把所有元素都放到了Baseline上,包括上標(biāo)下標(biāo)。Eric的解釋是,強(qiáng)制讓設(shè)計(jì)師精確定位這些元素的垂直偏移。
11,插入和刪除(ins/del)
對于這個問題,YUI直接清除了ins的下劃線和del的刪除線這兩個文本裝飾:
del, ins {
text-decoration: none;
}
而Eric保留了刪除線:
/* remember to highlight inserts somehow! */
ins {
text-decoration: none;
}
del {
text-decoration: line-through;
}
如何取舍?我選擇Eric的,為什么我這里不追求完美的樣式重置了呢?很簡單,我這個reset的目標(biāo)是為了讓我們寫頁面的時候盡量避免瀏覽器默認(rèn)樣 式,以及不同瀏覽器之間默認(rèn)樣式差異帶來的問題。而del元素刪除線的文本裝飾,我相信沒有人會反對的。有人會加上其他樣式,比如字體變淡之類的,但對于 del如此強(qiáng)語義的元素來說,沒有什么比用刪除線更能表達(dá)含義的了。而不像上面那個focus樣式,未必人人喜歡虛線框。
所以,這里我考慮采納Eric的重置樣式。同時別忘了給ins元素在等下也添加一些樣式。
12,引用元素的引號
某些瀏覽器中,q或者blockquote前后會出現(xiàn)引號。這個并不是誰都喜歡的。所以需要重置他。
YUI的比較簡單,只重置了q:
q:before,
q:after {
content: '';
}
而Eric則比較周到,把q和blockquote都重置了。
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
OK,就決定用Eric的了,對于樣式重置,細(xì)致一點(diǎn)周到一點(diǎn)總沒有錯。
相關(guān)文章
AudioContext 實(shí)現(xiàn)音頻可視化(web技術(shù)分享)
這篇文章主要分享的是web技術(shù)的 AudioContext 實(shí)現(xiàn)音頻可視化,要實(shí)現(xiàn)音頻可視化得先實(shí)現(xiàn)一些炫酷的效果需要借助 Web Audio API提供的一些方法 AudioContext,下面詳細(xì)內(nèi)容2022-02-23- 這篇文章主要給大家介紹了web技術(shù)中的WebRTC記錄音視頻流,文章內(nèi)容圍繞主題展相關(guān)資料,需要的小伙伴可以參考一下,希望對你有所幫助2022-02-23
- 這是我通過網(wǎng)上查閱資料總結(jié)的一些編碼規(guī)范,用于鞏固對html,css頁面重構(gòu)時的基礎(chǔ),需要的朋友可以參考下2020-12-19
前端編碼規(guī)范(4)—— CSS 和 Sass (SCSS) 開發(fā)規(guī)范
這篇文章主要介紹了前端編碼規(guī)范(4)—— CSS 和 Sass (SCSS) 開發(fā)規(guī)范,需要的朋友可以參考下2017-01-21Web前端開發(fā)規(guī)范2017(HTML/JavaScript/CSS)
這是一份旨在增強(qiáng)團(tuán)隊(duì)的開發(fā)協(xié)作,提高代碼質(zhì)量和打造開發(fā)基石的編碼風(fēng)格規(guī)范,其中包含了 HTML, JavaScript 和 CSS/SCSS 這幾個部分。我們知道,當(dāng)一個團(tuán)隊(duì)開始指定并實(shí)行2017-01-21- 這篇文章主要為大家介紹了前端開發(fā)團(tuán)隊(duì)遵循和約定的代碼書寫規(guī)范,意在提高代碼的規(guī)范性和可維護(hù)性,需要的朋友可以參考下2017-01-21
響應(yīng)式Web之流式網(wǎng)格系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了響應(yīng)式Web之流式網(wǎng)格系統(tǒng)的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-04在網(wǎng)頁標(biāo)題欄上和收藏夾顯示網(wǎng)站logo的實(shí)現(xiàn)方法
下面小編就為大家分享一篇在網(wǎng)頁標(biāo)題欄上和收藏夾顯示網(wǎng)站logo的實(shí)現(xiàn)方法。希望對大家有所幫助。一起跟隨小編過來看看吧,祝大家游戲愉快哦2016-03-16Visual Foxpro 6.0 中文版安裝向?qū)?圖解)
基于很多用戶都在下載Visual Foxpro 6.0,但是有安裝vtp6.0經(jīng)驗(yàn)的朋友確很少,在安裝過程中總會出現(xiàn)這樣那樣的問題,基于這些問題,下面小編抽個時間把Visual Foxpro 6.02015-09-09網(wǎng)站日志200 0 64狀態(tài)碼的分析(協(xié)議子狀態(tài))
網(wǎng)站日志200 0 64狀態(tài)碼的分析介紹2012-10-29