CSS 指層疊樣式表 (Cascading Style Sheets)css
把樣式添加到 HTML 4.0 中,是爲了解決內容與表現分離的問題html
CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。瀏覽器
selector {declaration1; declaration2; ... declarationN }
選擇器一般是您須要改變樣式的 HTML 元素。編輯器
每條聲明由一個屬性和一個值組成。ide
屬性(property)是您但願設置的樣式屬性(style attribute)。每一個屬性有一個值。屬性和值被冒號分開。佈局
selector {property: value}
下面這行代碼的做用是將 h1 元素內的文字顏色定義爲紅色,同時將字體大小設置爲 14 像素。字體
在這個例子中,h1 是選擇器,color 和 font-size 是屬性,red 和 14px 是值。this
h1 {color:red; font-size:14px;}
下面的示意圖爲您展現了上面這段代碼的結構:url
提示:請使用花括號來包圍聲明。spa
1)值的不一樣寫法和單位
除了英文單詞 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,不管單位是什麼。
2)記得寫引號
提示:若是值爲若干單詞,則要給值加引號:
p {font-family: "sans serif";}
3)多重聲明
提示:若是要定義不止一個聲明,則須要用分號將每一個聲明分開。下面的例子展現出如何定義一個紅色文字的居中段落。最後一條規則是不須要加分號的,由於分號在英語中是一個分隔符號,不是結束符號。
p {text-align:center; color:red;}
你應該在每行只描述一個屬性,這樣能夠加強樣式定義的可讀性,就像這樣:
p { text-align: center; color: black; font-family: arial; }
4)空格和大小寫
大多數樣式表包含不止一條規則,而大多數規則包含不止一個聲明。多重聲明和空格的使用使得樣式表更容易被編輯:
body { color: #000; background: #fff; margin: 0; padding: 0; font-family: Georgia, Palatino, serif; }
1)選擇器的分組
你能夠對選擇器進行分組,這樣,被分組的選擇器就能夠分享相同的聲明。用逗號將須要分組的選擇器分開。在下面的例子中,咱們對全部的標題元素進行了分組。全部的標題元素都是綠色的。
h1,h2,h3,h4,h5,h6 { color: green; }
經過依據元素在其位置的上下文關係來定義樣式,你可使標記更加簡潔。
在 CSS1 中,經過這種方式來應用規則的選擇器被稱爲上下文選擇器 (contextual selectors),這是因爲它們依賴於上下文關係來應用或者避免某項規則。在 CSS2 中,它們稱爲派生選擇器,可是不管你如何稱呼它們,它們的做用都是相同的。
派生選擇器容許你根據文檔的上下文關係來肯定某個標籤的樣式。經過合理地使用派生選擇器,咱們可使 HTML 代碼變得更加整潔。
比方說,你但願列表中的 strong 元素變爲斜體字,而不是一般的粗體字,能夠這樣定義一個派生選擇器:
li strong { font-style: italic; font-weight: normal; }
請注意標記爲 <strong> 的藍色代碼的上下文關係:
<p><strong>我是粗體字,不是斜體字,由於我不在列表當中,因此這個規則對我不起做用</strong></p> <ol> <li><strong>我是斜體字。這是由於 strong 元素位於 li 元素內。</strong></li> <li>我是正常的字體。</li> </ol>
在上面的例子中,只有 li 元素中的 strong 元素的樣式爲斜體字,無需爲 strong 元素定義特別的 class 或 id,代碼更加簡潔。
再看看下面的 CSS 規則:
strong { color: red; } h2 { color: red; } h2 strong { color: blue; }
下面是它施加影響的 HTML:
<p>The strongly emphasized word in this paragraph is<strong>red</strong>.</p> <h2>This subhead is also red.</h2> <h2>The strongly emphasized word in this subhead is<strong>blue</strong>.</h2>
id 選擇器能夠爲標有特定 id 的 HTML 元素指定特定的樣式。
id 選擇器以 "#" 來定義。
下面的兩個 id 選擇器,第一個能夠定義元素的顏色爲紅色,第二個定義元素的顏色爲綠色:
#red {color:red;} #green {color:green;}
下面的 HTML 代碼中,id 屬性爲 red 的 p 元素顯示爲紅色,而 id 屬性爲 green 的 p 元素顯示爲綠色。
<p id="red">這個段落是紅色。</p> <p id="green">這個段落是綠色。</p>
在現代佈局中,id 選擇器經常用於創建派生選擇器。
#sidebar p { font-style: italic; text-align: right; margin-top: 0.5em; }
上面的樣式只會應用於出如今 id 是 sidebar 的元素內的段落。這個元素極可能是 div 或者是表格單元,儘管它也多是一個表格或者其餘塊級元素。它甚至能夠是一個內聯元素,好比 <em></em> 或者 <span></span>,不過這樣的用法是非法的,由於不能夠在內聯元素 <span> 中嵌入 <p>。
即便被標註爲 sidebar 的元素只能在文檔中出現一次,這個 id 選擇器做爲派生選擇器也能夠被使用不少次:
#sidebar p { font-style: italic; text-align: right; margin-top: 0.5em; } #sidebar h2 { font-size: 1em; font-weight: normal; font-style: italic; margin: 0; line-height: 1.5; text-align: right; }
在這裏,與頁面中的其餘 p 元素明顯不一樣的是,sidebar 內的 p 元素獲得了特殊的處理,同時,與頁面中其餘全部 h2 元素明顯不一樣的是,sidebar 中的 h2 元素也獲得了不一樣的特殊處理。
id 選擇器即便不被用來建立派生選擇器,它也能夠獨立發揮做用:
#sidebar { border: 1px dotted #000; padding: 10px; }
根據這條規則,id 爲 sidebar 的元素將擁有一個像素寬的黑色點狀邊框,同時其周圍會有 10 個像素寬的內邊距(padding,內部空白)。
div#sidebar { border: 1px dotted #000; padding: 10px; }
在 CSS 中,類選擇器以一個點號顯示:
.center {text-align: center}
在上面的例子中,全部擁有 center 類的 HTML 元素均爲居中。
在下面的 HTML 代碼中,h1 和 p 元素都有 center 類。這意味着二者都將遵照 ".center" 選擇器中的規則。
<h1 class="center"> This heading will be center-aligned </h1> <p class="center"> This paragraph will also be center-aligned. </p>
注意:類名的第一個字符不能使用數字!它沒法在 Mozilla 或 Firefox 中起做用。
和 id 同樣,class 也可被用做派生選擇器:
.fancy td { color: #f60; background: #666; }
在上面這個例子中,類名爲 fancy 的更大的元素內部的表格單元都會以灰色背景顯示橙色文字。(名爲 fancy 的更大的元素多是一個表格或者一個 div)
元素也能夠基於它們的類而被選擇:
td.fancy { color: #f60; background: #666; }
在上面的例子中,類名爲 fancy 的表格單元將是帶有灰色背景的橙色。
<td class="fancy">
你能夠將類 fancy 分配給任何一個表格元素任意多的次數。那些以 fancy 標註的單元格都會是帶有灰色背景的橙色。那些沒有被分配名爲 fancy 的類的單元格不會受這條規則的影響。還有一點值得注意,class 爲 fancy 的段落也不會是帶有灰色背景的橙色,固然,任何其餘被標註爲 fancy 的元素也不會受這條規則的影響。這都是因爲咱們書寫這條規則的方式,這個效果被限制於被標註爲 fancy 的表格單元(即便用 td 元素來選擇 fancy 類)。
對帶有指定屬性的 HTML 元素設置樣式。
能夠爲擁有指定屬性的 HTML 元素設置樣式,而不只限於 class 和 id 屬性。
註釋:只有在規定了 !DOCTYPE 時,IE7 和 IE8 才支持屬性選擇器。在 IE6 及更低的版本中,不支持屬性選擇。
下面的例子爲帶有 title 屬性的全部元素設置樣式:
[title] { color:red; }
下面的例子爲 title="zyy" 的全部元素設置樣式:
[title=zyy] { border:5px solid blue; }
下面的例子爲包含指定值的 title 屬性的全部元素設置樣式。適用於由空格分隔的屬性值:
[title~=hello] { color:red; }
下面的例子爲帶有包含指定值的 lang 屬性的全部元素設置樣式。適用於由連字符分隔的屬性值:
[lang|=en] { color:red; }
屬性選擇器在爲不帶有 class 或 id 的表單設置樣式時特別有用:
input[type="text"] { width:150px; display:block; margin-bottom:10px; background-color:yellow; font-family: Verdana, Arial; } input[type="button"] { width:120px; margin-left:35px; display:block; font-family: Verdana, Arial; }
當讀到一個樣式表時,瀏覽器會根據它來格式化 HTML 文檔。插入樣式表的方法有三種:
當樣式須要應用於不少頁面時,外部樣式表將是理想的選擇。在使用外部樣式表的狀況下,你能夠經過改變一個文件來改變整個站點的外觀。每一個頁面使用 <link> 標籤連接到樣式表。<link> 標籤在(文檔的)頭部:
<head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head>
瀏覽器會從文件 mystyle.css 中讀到樣式聲明,並根據它來格式文檔。
外部樣式表能夠在任何文本編輯器中進行編輯。文件不能包含任何的 html 標籤。樣式表應該以 .css 擴展名進行保存。下面是一個樣式表文件的例子:
hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");}
不要在屬性值與單位之間留有空格。假如你使用 「margin-left: 20 px」 而不是 「margin-left: 20px」 ,它僅在 IE 6 中有效,可是在 Mozilla/Firefox 或 Netscape 中卻沒法正常工做。
當單個文檔須要特殊的樣式時,就應該使用內部樣式表。你可使用 <style> 標籤在文檔頭部定義內部樣式表,就像這樣:
<head> <style type="text/css"> hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");} </style> </head>
因爲要將表現和內容混雜在一塊兒,內聯樣式會損失掉樣式表的許多優點。請慎用這種方法,例如當樣式僅須要在一個元素上應用一次時。
要使用內聯樣式,你須要在相關的標籤內使用樣式(style)屬性。Style 屬性能夠包含任何 CSS 屬性。本例展現如何改變段落的顏色和左外邊距:
<p style="color: sienna; margin-left: 20px"> This is a paragraph </p>
若是某些屬性在不一樣的樣式表中被一樣的選擇器定義,那麼屬性值將從更具體的樣式表中被繼承過來。
例如,外部樣式表擁有針對 h3 選擇器的三個屬性:
h3 { color: red; text-align: left; font-size: 8pt; }
而內部樣式表擁有針對 h3 選擇器的兩個屬性:
h3 { text-align: right; font-size: 20pt; }
假如擁有內部樣式表的這個頁面同時與外部樣式表連接,那麼 h3 獲得的樣式是:
color: red; text-align: right; font-size: 20pt;
即顏色屬性將被繼承於外部樣式表,而文字排列(text-alignment)和字體尺寸(font-size)會被內部樣式表中的規則取代。
1. CSS 基礎語法