1. 程式人生 > >《CSS權威指南》第3版

《CSS權威指南》第3版

1 CSS和文件

層疊樣式表(Cascading Style SheetsCSS)的功能非常強大,可以影響一個或一組文件的表現。

1995年,W3C開始釋出一種正在進行的計劃,稱為CSS。到1996年,這已經成為了一個成熟的推薦草案,其地位與HTML同樣舉足輕重。

層疊:

CSS還規定了衝突規則,這些規則統稱為層疊。

替換元素:是指用來替換元素內容的部分並非由文件內容直接表示,例如img元素,它由文件本身之外的一個影象檔案來替換。

非替換元素:大多數HTMLXHTML元素都是非替換元素。

如何關聯樣式:

<link>標記連結外部樣式表;

style元素;

@import指令:出現在style容器中,並且放在開頭,

@import url(sheet2.css);

內聯樣式:HTMLstyle屬性;

2章選擇器

規則結構:

每個規則都有兩個基本部分:選擇器和宣告塊。宣告塊由一個或多個宣告組成,每個宣告則是一個屬性-值對。

選擇器分組:

使用逗號分組,如h2,p{ }

1)除了文件元素的選擇器之外,還有另外兩種型別的選擇器:類選擇器和ID選擇器。

2)屬性選擇器:

簡單屬性選擇器:h1[class]{ }

部分值屬性選擇器:h1[class~=warning”] {}

子串匹配屬性選擇器:

[foo^=bar”]選擇foo屬性值以”bar”開頭的所有元素

[foo$=bar”]選擇foo屬性值以”bar“結尾的所有元素

[foo*=bar”]選擇foo屬性值中包含子串”bar”的所有元素

[lang|=en”]選擇lang屬性等於en或者以en-開頭的所有元素

3)後代選擇器:

用空格分隔,關於後代選擇器有一個常被忽視的方面,即兩個元素之間的層次間隔可以是無限的。

4)選擇子元素:

可以使用子結合符,即大於號(>);

5)選擇相鄰兄弟元素:

可以使用相鄰兄弟結合符,即一個加號(+);

6)偽類選擇器:

所有偽類和偽元素關鍵字前面都有一個冒號。

:link:visited:focus:hover:active

選擇第一個字元素:

可以使用一個靜態偽類:first-child來選擇元素的第一個子元素。

7)偽元素選擇器

就像偽類為錨指定幻象類一樣,偽元素能夠在文件中插入假想的元素,從而獲得某種效果。CSS2.1中定義了4個偽元素:設定首字母樣式:first-letter、設定第一行樣式:first-line、設定之前和之後元素的樣式。

所有偽元素都必須放在出現該偽元素的選擇器的最後面。

h2:before{content: }}”; color: silver}

3章結構和層疊

繼承是從一個元素向其後代元素傳遞屬性值所採用的機制。確定應當向一個元素應用哪些值時,使用者代理不僅要考慮繼承,還要考慮宣告的特殊性,另外需要考慮宣告本身的來源。這個過程就稱為層疊。

1)特殊性:

對於選擇器中給定的ID屬性值,加0100

對於選擇器中給定的各個類屬性值、屬性選擇或偽類,加0010

對於選擇器中給定的各個元素或偽元素,加0001

內聯宣告的特殊性是1000

結合符和萬用字元選擇器對特殊性沒有任何貢獻。

重要宣告:

!important重要宣告總是勝出。

2)繼承

一般地,大多數框模型屬性(包括外邊距、內邊距、背景和邊框)都不能繼承。

通配選擇器有0特殊性,繼承沒有特殊性,所以有時候通配選擇器會有一種短路繼承的效果。

3)層疊

按權重和來源排序:讀者重要宣告>創作者重要宣告>創作者正常宣告>讀者正常宣告>使用者代理預設宣告;

按特殊性排序;

按出現順序排序:如果兩個規則的權重、來源和特殊性安全相同,那麼在樣式表中後出現的一個會勝出。

4章值和單位

顏色:函式式RGB顏色、十六進位制RGB顏色

長度單位:絕對長度單位和相對長度單位。

相對長度單位:共有3種,emexpx

em1em定義為一種給定字型的font-size值。如果一個元素的font-size14畫素,那麼對於該元素,1em就等於14畫素。

ex:是指所用字型中小寫x的高度,一些瀏覽器的做法是取0.5em作為ex值。

px:非常適合用畫素來度量影象大小,因為影象的高度和寬度本身就是畫素數。

關鍵字inheritinherit使一個屬性的值與其父元素的值相同。

5章字型

1)字體系列:font-family

除了各種特定字體系列外(如TimesVerdanaHelveticaArial),CSS還定義了5種通用字體系列(Serif字型、Sans-serif字型、Monospace字型、Cursive字型、Fantasy字型)。

2)字型加粗:font-weight

3)字型大小:font-size

絕對大小、相對大小(largersmaller)、百分數和大小(百分數總是根據從父元素繼承的大小來計算)

4)風格和變形:

風格:font-stylenormal文字、italic文字、oblique文字)

變形:font-variantnormalsmall-capsinherit

5)拉伸和調整字型

拉伸:font-stretch

調整:font-size-adjust(這個屬性的目標是,當所用字型並非創作人員的首選時,仍然可以保持辨識)。

6font屬性:

它是涵蓋所有其他字型屬性的一個簡寫屬性。

前三個屬性順序任意:font-stylefont-weightfont-variant。後兩個font-sizefont-family

font-size後加/斜槓可以補充行高line-height,儘管行高是文字屬性而不是字型屬性。

6章文字屬性

1)縮排文字:text-indent,應用於塊級元素,有繼承性。

2)水平對齊:text-align,應用於塊級元素,有繼承性。

Leftrightcenterjustify(兩端對齊)

3)垂直對齊

行高:line-height屬性是指文字行基線之間的距離,應用於所有元素,有繼承性,值為百分數時是相對於元素的字型大小,通常是字型大小的1.2倍。

垂直對齊文字:vertical-align屬性只應用於行內元素和表單元格,不能繼承。(baselinesubsuperbottomtext-bottomtopmiddle、百分數(相對於自身line-height計算)、px長度);

注意:所有垂直對齊的元素都會影響行高,應該記得行框的描述,其高度要足以包含最高行內框的頂端和最低行內框的底端。

4)字間隔和字母間隔

字間隔:word-spacing,應用於所有元素,有繼承性。

字母間隔:letter-spacing,應用於所有元素,有繼承性。

5)文字轉換:

text-transform應用於所有元素,有繼承性。(uppercaselowercase將文字轉換為全大寫或全小寫字元,capitalize只對每個單詞的首字母大寫)

6)文字裝飾

Text-decorationunderlineoverlainline-through,不能繼承

7)文字陰影

Text-shadow:green 5px 0.5em;

8)處理空白符:white-space

使用這個屬性,它會影響使用者代理對源文件中的空格、換行和tab字元的處理。

取值pre:瀏覽器將會注意額外的空格,甚至回車;

nowrap:它會防止元素中的文字換行,除非使用了一個br元素。

7章基本視覺格式化

1)基本框:

內容區、內邊距、邊框、外邊距。

一般的:width被定義為內容區的寬度、height被定義為內容區的高度。

2)塊級元素:

水平格式化:

Widthmargin-leftmargin-right可以設定為auto,會自動調整元素寬度為包含塊的width

margin-leftmargin-right都設定為auto時可以將元素居中。

margin區域會顯示父元素的背景顏色;

只有外邊距可以設定為負值;

垂直格式化:

可以對任何塊級元素設定顯示高度。

7個屬性中,heightmargin-topmargin-bottom可以設定為auto,其他不行。

如果沒有顯示宣告包含塊的height,百分數高度會重置為auto

auto高度:

1.如果塊級元素高度設為auto,而且只有塊級子元素,其高度將不會包含子元素的外邊距;

2.如果塊級元素高度設為auto,並且設了borderpadding,其高度將會包含子元素的外邊距。

合併垂直外邊距:垂直相鄰的外邊距會合並。

3)行內元素:

行內非替換元素

匿名文字:未包含在行內元素中的字串;

內容區:

行間距:是font-size的值和line-height值之差;

行內框:對非替換元素行內框的高度剛好等於line-height的值,對於替換元素,行內框的高度等於內容區的高度;

行框:這是包含該行中出現的行內框的最高點和最低點的最小框。

內邊距、邊框、外邊距都可以應用於行內非替換元素,但根本不會影響行框的高度,可以影響左右兩端。

行內替換元素

有固有高度的替換元素可能導致行框比正常要高,這不會改變行中任何元素的line-height值,包括替換元素本身。

內邊距和邊框會影響替換元素的行框的高度。

替換元素並沒有自己的基線,所以相對來講最好的辦法是將其行內框的底端與基線對齊。

4)改變元素顯示

Display屬性:blockinlineinline-blockrun-in

行內塊元素:

行內塊元素會作為替換元素放在行中,這說明,行內塊元素的底端預設地位於文字行的基線上,而且內部沒有行分隔符。

run-in:可以使某些塊級元素成為下一個元素的行內部分。

8章內邊距、邊框和外邊距

1)寬度和高度:

這兩個元素不能應用到行內非替換元素。

IE6之前這兩個屬性是指可見元素框的尺寸,而不是內容區尺寸。

2)外邊距:

Margin:百分數時是相對於包含塊的width

如果指定了3個值,則第4個值從第2個值複製;

為行內非替換元素設定外邊距不會影響行高,為行內替換元素設定外邊距會影響行高。

3)邊框

預設的顏色是元素的前景色,如果沒有為邊框宣告顏色,它將與元素的文字顏色相同。

元素的背景會出現在邊框的可見部分(點線邊框或虛線邊框)。

border-stylesolid dashed none dotted;(為none時表示邊框不存在,寬度也變為了0

單邊樣式:border-top-style

border-width1px;

單邊寬度:border-top-width

border-color:transparent;(透明邊框)

單邊顏色:border-top-color

簡寫屬性:borderborder-topborder-rightborder-bottomborder-left(值的順序沒有要求)

4)內邊距

9章顏色和背景

1)顏色

可以為任何元素設定前景色和背景色。

2)背景

Background-colortransparent(預設值為透明)

背景影象:background-imageurl(bg23.gif);

預設會平鋪,即水平和垂直方向重複影象使得充滿整個背景;

影象放在所指定的背景顏色之上。

Background-repeatrepeatrepeat-xrepeat-yno-repeatinherit

Background-positiontopbottomleftrightcenter成對出現

Background-attachmentscrollfixed(相對於可視區是固定的)、inherit

彙總:

backgroud:這個屬性可以從其他各個背景屬性取一個值,而且可以採用任何順序。