[CSS]層疊樣式表CSS的基本文法和繼承問題

來源:互聯網
上載者:User

CSS (Cascading Style Sheets)文法
CSS 規則由兩個主要的部分構成:選取器,以及一條或多條聲明。

selector {declaration1; declaration2; ... declarationN }

選取器(selector)通常是你需要改變樣式的 HTML 元素。
每條聲明(declaration)由一個屬性(property)和一個值(value)組成。
屬性(property)是你希望設定的樣式屬性(style attribute)。每個屬性有一個值。屬性和值被冒號分開。

selector {property: value}


下面這行代碼的作用是將 h1 元素內的文字顏色定義為紅色,同時將字型大小設定為 14 像素。
在這個例子中,h1 是選取器(selector),color 和 font-size 是屬性(property),red 和 14px 是值(value)。

h1 {color:red; font-size:14px;}

下面的為你展示了上面這段代碼的結構:

提示:請使用花括弧來包圍聲明。


值的不同寫法和單位
除了英文單詞 red,我們還可以使用十六進位的顏色值 #ff0000:

p { color: #ff0000; }

為了節約位元組,我們可以使用 CSS 的縮寫形式:

p { color: #f00; }

我們還可以通過兩種方法使用 RGB 值:

p { color: rgb(255,0,0); }p { color: rgb(100%,0%,0%); }

請注意,當使用 RGB 百分比時,即使當值為 0 時也要寫百分比符號。但是在其他的情況下就不需要這麼做了。

比如說,當尺寸為 0 像素時,0 之後不需要使用 px 單位,因為 0 就是 0,無論單位是什麼。


記得寫引號

提示:如果值為若干單詞,則要給值加引號:

p {font-family: "sans serif";}

多重聲明:
提示:如果要定義不止一個聲明,則需要用分號將每個聲明分開。下面的例子展示出如何定義一個紅色文字的置中段落。最後一條規則是不需要加分號的,因為分號在英語中是一個分隔字元號,不是結束符號。然而,大多數有經驗的設計師會在每條聲明的末尾都加上分號,這麼的好處是,當你從現有的規則中增減聲明時,會儘可能的減少出錯的可能性。就像這樣:

p {text-align:center; color:red;}    

你應該在每行只描述一個屬性,這樣可以增強樣式定義的可讀性,就像這樣:

p {  text-align: center;  color: black;  font-family: arial;}

空格和大小寫
大多數樣式表包含不止一條規則,而大多數規則包含不止一個聲明。多重聲明和空格的使用使得樣式表更容易被編輯:

body {  color: #000;  background: #fff;  margin: 0;  padding: 0;  font-family: Georgia, Palatino, serif;}

是否包含空格不會影響 CSS 在瀏覽器的工作效果,同樣,與 XHTML 不同,CSS 對大小寫不敏感。

不過存在一個例外:如果涉及到與 HTML 文檔一起工作的話,class 和 id 名稱對大小寫是敏感的。


選取器的分組
你可以對選取器進行分組,這樣,被分組的選取器就可以分享相同的聲明。用逗號將需要分組的選取器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。

h1,h2,h3,h4,h5,h6 {  color: green;}


繼承及其問題
根據 CSS,子項目從父元素繼承屬性。但是它並不總是按此方式工作。看看下面這條規則:

body {     font-family: Verdana, sans-serif;}

根據上面這條規則,網站的 body 元素將使用 Verdana 字型(假如訪問者的系統中存在該字型的話)。

通過 CSS 繼承,子項目將繼承最進階元素(在本例中是 body)所擁有的屬性(這些子項目諸如 p, td, ul, ol, ul, li, dl, dt,和 dd)。不需要另外的規則,所有 body 的子項目都應該顯示 Verdana 字型,子項目的子項目也一樣。並且在大部分的現代瀏覽器中,也確實是這樣的。

但是在那個瀏覽器大戰的血腥年代裡,這種情況就未必會發生,那時候對標準的支援並不是企業的優先選擇。比方說,Netscape 4 就不支援繼承,它不僅忽略繼承,而且也忽略應用於 body 元素的規則。IE/Windows 直到 IE6 還存在相關的問題,在表格內的字型樣式會被忽略。我們又該如何是好呢?
友善地對待Netscape 4

幸運地是,你可以通過使用我們稱為 "Be Kind to Netscape 4" 的冗餘法則來處理舊式瀏覽器無法理解繼承的問題。

body  {     font-family: Verdana, sans-serif;}p, td, ul, ol, li, dl, dt, dd  {     font-family: Verdana, sans-serif;}

4.0 瀏覽器無法理解繼承,不過他們可以理解組選取器。這麼做雖然會浪費一些使用者的頻寬,但是如果需要對 Netscape 4 使用者進行支援,就不得不這麼做。

如果你不希望 "Verdana, sans-serif" 字型被所有的子項目繼承,又該怎麼做呢?比方說,你希望段落的字型是 Times。沒問題。建立一個針對 p 的特殊規則,這樣它就會擺脫父元素的規則:

body  {     font-family: Verdana, sans-serif;}td, ul, ol, ul, li, dl, dt, dd  {     font-family: Verdana, sans-serif;}p  {     font-family: Times, "Times New Roman", serif;}


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.