iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Modern Web

後轉前要多久系列 第 8

【後轉前要多久】# Day08 CSS - CSS Reset

  • 分享至 

  • xImage
  •  

HTML的註解是使用 <!-- -->
而CSS的註解是使用 /* */


瀏覽器預設樣式

同樣一份HTML,
在不同瀏覽器開起來,樣式卻不一定完全相同

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>我是H1標籤</h1>
<p>P段落</p>
<a href="#">a連結</a>

<ul>
    <li>物件1</li>
    <li>物件2</li>
</ul>

</body>
</html>

這一份HTML在,
IE vs Chrome 兩者開起來的差異
reset前IE VS Chrome

瀏覽器(Chrome、Safari、IE、Firefox等)預設會對每個標籤做屬性預設值,
例如預設行高、文字大小、列表樣式、標籤邊界及留白區域等等,
用不同瀏覽器開起來的效果也不盡相同。

但這樣很麻煩啊,
要是設計師設計出一套規格,工程師也順利寫出來了,
但使用者用的瀏覽器差異很大,是不是有機會跑版走歪?

CSS Reset 重設、歸零

既然CSS可以後者覆蓋前面,
那就覆寫所有的tag,讓全部瀏覽器預設值先歸零(移除預設樣式)呀!
於是就有人寫出了歸零的樣式表,叫作CSS Reset的樣式
好讓設計師方便統一瀏覽器樣式。

但因為對於歸零沒有一個明確的定義(大家對於歸零的想法不太一樣),
所以坊間流傳多種CSS Reset版本,其中最為廣用的是Eric Meyer的版本

就是以下這一份CSS

/* http://meyerweb.com/eric/tools/css/reset/
   v2.0 | 20110126
   License: none (public domain)
*/

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, 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,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}

直接copy下來,存檔後就能當作一般樣式使用了。
檔名建議取為cssreset.css,而不要叫作

檔案建議取名為 cssreset.css或者cssreset-context.css
(而非 reset.cssreset-context.css)

經過Reset後
IE開起來 vs Chrome開起來
reset後 IE VS Chrome

經過CSS Reset後,
不論<h1><p>、或是<div>
全部標籤大小及所佔空間就都一模一樣了。

link的順序

CSS Reset要先做,再做自己的樣式

...
<link rel="stylesheet" href="cssreset.css">
<link rel="stylesheet" href="style.css">
...

我先宣告變數 x=10, y=5
再做歸零讓 x=0, y=0
最後才設上我要的樣式數值 x=100, y=-100

看到這,不自覺心裡OS:
要是各大瀏覽器們不各自設各自的樣式、而是有一套預設的共同的基準
我們何必多此一舉搞這個詭異的Reset步驟

CSS Normalize 標準化

CSS Normalize 做的事情類似於 CSS Reset,
但並沒有像CSS Reset把瀏覽器的設定、全部的值都替換掉,
而是選擇保留瀏覽器的預設,
僅針對瀏覽器間版本相容問題進行修改,較泛式,
免除重新設定各式<h1><h2><p> 大小等等的麻煩。

可參考這一份Normalize.css

裡面有有這一行做了什麼、以及為何而做的詳細註解。
(Normalize 更新次數比起CSS Reset稍微頻繁些)


網頁重整小技巧

在瀏覽網頁時,瀏覽器會自動快取一些小圖片、樣式表及執行的指令稿。
當網頁重新整理時,若硬碟快取中有快取資料,
瀏覽器會優先拿取、以節省網路流量(省去再去跟Server要一次)。

網頁快取也有可能對造成網頁開發者造成
"疑,我明明改樣式了,為什麼重新整理後卻沒有吃到樣式?"
並開始懷疑是否是自己寫法錯誤,導致沒指定到標籤等之類的疑惑。

在Windows上: Ctrl + F5
在MacOS上: Command + Shift + R

繞過瀏覽器快取,來保證瀏覽器要到的是最新的資料。


上一篇
【後轉前要多久】# Day07 CSS - 打架該聽誰的?CSS權重、繼承
下一篇
【後轉前要多久】# Day09 CSS - 色碼表
系列文
後轉前要多久30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言