HTML模板和CSS基準樣式(二)

阮一峰發表於2009-02-08

今天,我要寫的是CSS檔案的模組化。

如果你看過CSS檔案,就會知道很難看懂它。每個CSS檔案有許多行,每一行就是一條命令,可以放在檔案的任何位置,都能夠同樣生效,而且後面的行隨時可以覆蓋前面的行的設定。所以,閱讀CSS檔案就好像猜謎一樣,必須努力將不同的線索拼起來,令人非常痛苦,這直接導致了日後難於維護和修改。

考慮到這一點,很早就有人提出了CSS檔案的模組化,就是將相關的設定都放在一起。一般來說,CSS中的設定可以分成下面幾個模組:

* typography(字型)

* colour(顏色)

* link(連結)

* forms(表單)

* layout(佈局)

* navigation(導航)

這些模組當然不是固定不變的,你可以根據自己的需要進行增刪。有時候,單單一個模組中就有許多行,這時候,你就可以把它獨立出來,作為一個單獨的CSS子檔案,然後在父檔案中進行呼叫。

比如,昨天的HTML模板中,呼叫CSS檔案是這樣寫的:

@import url(style.css);

在這裡,style.css就是父檔案,然後我們在其中呼叫子檔案:

/* typography styles */
@import url("typo.css");

/* form elements */
@import url("forms.css");

/* main layout */
@import url("layout.css");

/* navigation */
@import url("horizontal-nav.css");

/* colour scheme */
@import url("skin.css");

除了上面這些模組以外,CSS中有些設定是全域性性的,主要用於覆蓋瀏覽器的預設樣式,這被稱作CSS基準樣式。我們可以把基準樣式單獨做成一個base.css,將它也加入主樣式表。

/* basic styling */
@import url("base.css");

網上有很多別人已經寫好的CSS基準樣式,我下面採用的是Crucial Web Hosting提供的一份,我覺得寫得比較規範,內容也很充分。

/***** Global Settings *****/

html, body {
border:0;
margin:0;
padding:0;
}

body {
font:100%/1.25 Arial, Helvetica, sans-serif;
}

/***** Headings *****/

h1, h2, h3, h4, h5, h6 {
margin:0;
padding:0;
font-weight:normal;
}

h1 {
padding:30px 0 25px 0;
letter-spacing:-1px;
font-size:2em;
}

h2 {
padding:20px 0;
letter-spacing:-1px;
font-size:1.5em;
}

h3 {
font-size:1em;
font-weight:bold;
}

/***** Common Formatting *****/

p, ul, ol {
margin:0;
padding:0 0 1.25em 0;
}

ul, ol {
padding:0 0 1.25em 2.5em;
}

blockquote {
margin:1.25em;
padding:1.25em 1.25em 0 1.25em;
}

small {
font-size:0.85em;
}

img {
border:0;
}

sup {
position:relative;
bottom:0.3em;
vertical-align:baseline;
}

sub {
position:relative;
bottom:-0.2em;
vertical-align:baseline;
}

acronym, abbr {
cursor:help;
letter-spacing:1px;
border-bottom:1px dashed;
}

/***** Links *****/

a,
a:link,
a:visited,
a:hover {
text-decoration:underline;
}

/***** Forms *****/

form {
margin:0;
padding:0;
display:inline;
}

input, select, textarea {
font:1em Arial, Helvetica, sans-serif;
}

textarea {
width:100%;
line-height:1.25;
}

label {
cursor:pointer;
}

/***** Tables *****/

table {
border:0;
margin:0 0 1.25em 0;
padding:0;
}

table tr td {
padding:2px;
}

/***** Wrapper *****/

#wrap {
width:960px;
margin:0 auto;
}

/***** Global Classes *****/

.clear { clear:both; }
.float-left { float:left; }
.float-right { float:right; }

.text-left { text-align:left; }
.text-right { text-align:right; }
.text-center { text-align:center; }
.text-justify { text-align:justify; }

.bold { font-weight:bold; }
.italic { font-style:italic; }
.underline { border-bottom:1px solid; }
.highlight { background:#ffc; }

.wrap { width:960px;margin:0 auto; }

.img-left { float:left;margin:4px 10px 4px 0; }
.img-right { float:right;margin:4px 0 4px 10px; }

.nopadding { padding:0; }
.noindent { margin-left:0;padding-left:0; }
.nobullet { list-style:none;list-style-image:none; }

有了HTML模板和CSS基準樣式以後,最後就剩下一個頁面佈局的問題了,這將是我明天要寫的內容。

(完)

相關文章