1. 程式人生 > >文字、字型樣式

文字、字型樣式

目錄

- font 

定義和用法

說明

使用引號

使用負值

繼承

值 pre

總結

文字方向

CSS 字型樣式

- font 

簡寫屬性,把所有針對字型的屬性設定在一個申明中

定義和用法

font 簡寫屬性在一個宣告中設定所有字型屬性。

註釋:此屬性也有第六個值:"line-height",可設定行間距。

說明

這個簡寫屬性用於一次設定元素字型的兩個或更多方面。使用 icon 等關鍵字可以適當地設定元素的字型,使之與使用者計算機環境中的某個方面一致。注意,如果沒有使用這些關鍵詞,至少要指定字型大小和字體系列。

可以按順序設定如下屬性:

  • font-style
  • font-variant
  • font-weight
  • font-size/line-height
  • font-family

可以不設定其中的某個值,比如 font:100% verdana; 也是允許的。未設定的屬性會使用其預設值。

描述
font-style 規定字型樣式。normal - 文字正常顯示;italic - 文字斜體顯示;oblique - 文字傾斜顯示
font-variant 規定字型異體。small-caps;
font-weight 規定字型粗細。normal - 文字正常顯示;bold - 粗體字元;bolder-更粗字元;lighter- 更細文字;100-900,自定義字元粗細。
font-size/line-height 規定字型尺寸和行高。
font-family 規定字體系列。
caption 定義被標題控制元件(比如按鈕、下拉列表等)使用的字型。
icon 定義被圖示標記使用的字型。
menu 定義被下拉列表使用的字型。
message-box 定義被對話方塊使用的字型。
small-caption caption 字型的小型版本。
status-bar 定義被視窗狀態列使用的字型
<html>
<head>
<style type="text/css">
p.ex1
{
font:italic arial,sans-serif;
}

p.ex2
{
font:italic bold 12px/30px arial,sans-serif;
}
</style>
</head>

<body>
<p class="ex1">This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph.</p>

<p class="ex2">This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph. This is a paragraph.</p>
</body>
</html>

- font-family

font-family 規定元素的字體系列。

font-family 可以把多個字型名稱作為一個“回退”系統來儲存。如果瀏覽器不支援第一個字型,則會嘗試下一個。也就是說,font-family 屬性的值是用於某個元素的字型族名稱或/及類族名稱的一個優先表。瀏覽器會使用它可識別的第一個值。

有兩種型別的字體系列名稱:

  • 指定的系列名稱:具體字型的名稱,比如:"times"、"courier"、"arial"。
  • 通常字體系列名稱:比如:"serif"、"sans-serif"、"cursive"、"fantasy"、"monospace"

提示:使用逗號分割每個值,並始終提供一個類族名稱作為最後的選擇。

注意:使用某種特定的字體系列(Geneva)完全取決於使用者機器上該字體系列是否可用;這個屬性沒有指示任何字型下載。因此,強烈推薦使用一個通用字體系列名作為後路。

/*單個字型指定 */
h1 {font-family: Georgia;}

/*多個字型進行備用 */
p {
    /* 按順序進行查詢,若找到則按照找到的字型進行輸出*/
    font-family: Times, TimesNR, 'New Century Schoolbook',
     Georgia, 'New York', serif;
  }

使用引號

您也許已經注意到了,上面的例子中使用了單引號。只有當字型名中有一個或多個空格(比如 New York),或者如果字型名包括 # 或 $ 之類的符號,才需要在 font-family 宣告中加引號。

單引號或雙引號都可以接受。但是,如果把一個 font-family 屬性放在 HTML 的 style 屬性中,則需要使用該屬性本身未使用的那種引號:

<p style="font-family: Times, TimesNR, 'New Century Schoolbook', Georgia,
 'New York', serif;">...</p>

- font-style

font-style 屬性定義字型的風格。

該屬性設定使用斜體、傾斜或正常字型。斜體字型通常定義為字體系列中的一個單獨的字型。

理論上講,使用者代理可以根據正常字型計算一個斜體字型。

該屬性有三個值:

  • normal - 文字正常顯示
  • italic - 文字斜體顯示
  • oblique - 文字傾斜顯示
p.normal {font-style:normal;}
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}

italic 和 oblique 的區別

font-style 非常簡單:用於在 normal 文字、italic 文字和 oblique 文字之間選擇。唯一有點複雜的是明確 italic 文字和 oblique 文字之間的差別。

斜體(italic)是一種簡單的字型風格,對每個字母的結構有一些小改動,來反映變化的外觀。 傾斜(oblique)文字則是正常豎直文字的一個傾斜版本。

通常情況下,italic 和 oblique 文字在 web 瀏覽器中看上去完全一樣。

- font-variant

font-variant屬性可以設定小型大寫字母。

font-variant 屬性設定小型大寫字母的字型顯示文字,這意味著所有的小寫字母均會被轉換為大寫,但是所有使用小型大寫字型的字母與其餘文字相比,其字型尺寸更小。

<!-- html檔案 -->
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<style type="text/css">
		p {font-variant:small-caps;}
	</style>
	
</head>
<body>
	<p>font-variant:small-caps</p>
</body>
</html>

- font-weight

使用 bold 關鍵字可以將文字設定為粗體。

關鍵字 100 ~ 900 為字型指定了 9 級加粗度。如果一個字型內建了這些加粗級別,那麼這些數字就直接對映到預定義的級別,100 對應最細的字型變形,900 對應最粗的字型變形。數字 400 等價於 normal,而 700 等價於 bold。

如果將元素的加粗設定為 bolder,瀏覽器會設定比所繼承值更粗的一個字型加粗。與此相反,關鍵詞 lighter 會導致瀏覽器將加粗度下移而不是上移。

p.normal {font-weight:normal;}
p.thick {font-weight:bold;}
p.thicker {font-weight:900;}

- font-size

font-size屬性設定文字的大小。

有能力管理文字的大小在 web 設計領域很重要。但是,您不應當通過調整文字大小使段落看上去像標題,或者使標題看上去像段落。

請始終使用正確的 HTML 標題,比如使用 <h1> - <h6> 來標記標題,使用 <p> 來標記段落。

font-size 值可以是絕對或相對值。

絕對值:

  • 將文字設定為指定的大小
  • 不允許使用者在所有瀏覽器中改變文字大小(不利於可用性)
  • 絕對大小在確定了輸出的物理尺寸時很有用

相對大小:

  • 相對於周圍的元素來設定大小
  • 允許使用者在瀏覽器改變文字大小

注意:如果您沒有規定字型大小,普通文字(比如段落)的預設大小是 16 畫素 (16px=1em)。

使用畫素來設定字型大小

通過畫素設定文字大小,可以對文字大小進行完全控制:

h1 {font-size:60px;}
h2 {font-size:40px;}
p {font-size:14px;}

使用 em 來設定字型大小

如果要避免在 Internet Explorer 中無法調整文字的問題,許多開發者使用 em 單位代替 pixels。

W3C 推薦使用 em 尺寸單位。

1em 等於當前的字型尺寸。如果一個元素的 font-size 為 16 畫素,那麼對於該元素,1em 就等於 16 畫素。在設定字型大小時,em 的值會相對於父元素的字型大小改變。

瀏覽器中預設的文字大小是 16 畫素。因此 1em 的預設尺寸是 16 畫素。

可以使用下面這個公式將畫素轉換為 em:pixels/16=em

(注:16 等於父元素的預設字型大小,假設父元素的 font-size 為 20px,那麼公式需改為:pixels/20=em

h1 {font-size:3.75em;} /* 60px/16=3.75em */
h2 {font-size:2.5em;}  /* 40px/16=2.5em */
p {font-size:0.875em;} /* 14px/16=0.875em */

結合使用百分比和 EM

在所有瀏覽器中均有效的方案是為 body 元素(父元素)以百分比設定預設的 font-size 值:

body {font-size:100%;}
h1 {font-size:3.75em;}
h2 {font-size:2.5em;}
p {font-size:0.875em;}

CSS文字屬性

屬性 描述
color 設定文字顏色
direction 設定文字方向。
line-height 設定行高。
letter-spacing 設定字元間距。
text-align 對齊元素中的文字。
text-decoration 向文字新增修飾。
text-indent 縮排元素中文字的首行。
text-shadow 設定文字陰影。CSS2 包含該屬性,但是 CSS2.1 沒有保留該屬性。
text-transform 控制元素中的字母。
unicode-bidi 設定文字方向。
white-space 設定元素中空白的處理方式。
word-spacing

設定字間距。

- 縮排文字 test-indent

test-indent,該屬性可以方便地實現文字縮排。

通過使用 text-indent 屬性,所有元素的第一行都可以縮排一個給定的長度,甚至該長度可以是負值。

這個屬性最常見的用途是將段落的首行縮排,下面的規則會使所有段落的首行縮排 5 em:

p {text-indent: 5em;}

注意:一般來說,可以為所有塊級元素應用 text-indent,但無法將該屬性應用於行內元素,影象之類的替換元素上也無法應用 text-indent 屬性。不過,如果一個塊級元素(比如段落)的首行中有一個影象,它會隨該行的其餘文字移動。

提示:如果想把一個行內元素的第一行“縮排”,可以用左內邊距或外邊距創造這種效果。

使用負值

text-indent 還可以設定為負值。利用這種技術,可以實現很多有趣的效果,比如“懸掛縮排”,即第一行懸掛在元素中餘下部分的左邊:

p {text-indent: -5em;}

不過在為 text-indent 設定負值時要當心,如果對一個段落設定了負值,那麼首行的某些文字可能會超出瀏覽器視窗的左邊界。為了避免出現這種顯示問題,建議針對負縮排再設定一個外邊距或一些內邊距:

p {text-indent: -5em; padding-left: 5em;}

使用百分比值

text-indent 可以使用所有長度單位,包括百分比值。

百分數要相對於縮排元素父元素的寬度。換句話說,如果將縮排值設定為 20%,所影響元素的第一行會縮排其父元素寬度的 20%。

在下例中,縮排值是父元素的 20%,即 100 個畫素:

div {width: 500px;}
p {text-indent: 20%;}

<div>
<p>this is a paragragh</p>
</div>

繼承

text-indent 屬性可以繼承,請考慮如下標記:

div#outer {width: 500px;}
div#inner {text-indent: 10%;}
p {width: 200px;}

<div id="outer">
<div id="inner">some text. some text. some text.
<p>this is a paragragh.</p>
</div>
</div>

以上標記中的段落也會縮排 50 畫素,這是因為這個段落繼承了 id 為 inner 的 div 元素的縮排值。

- 水平對齊 text-align

text-align是一個基本的屬性,它會影響一個元素中的文字行互相之間的對齊方式。

現象
left 左對齊
right 右對齊
center 居中

西方語言都是從左向右讀,所有 text-align 的預設值是 left

文字在左邊界對齊,右邊界呈鋸齒狀(稱為“從左到右”文字)。

對於希伯來語和阿拉伯語之類的的語言,text-align 則預設為 right,因為這些語言從右向左讀。不出所料,center 會使每個文字行在元素中居中。

提示:將塊級元素或表元素居中,要通過在這些元素上適當地設定左、右外邊距來實現。

- center 與‘ <CENTER>’

您可能會認為 text-align:center 與 <CENTER> 元素的作用一樣,但實際上二者大不相同。

<CENTER> 不僅影響文字,還會把整個元素居中。 text-align 不會控制元素的對齊,而隻影響內部內容。元素本身不會從一段移到另一端,只是其中的文字受影響。

justify

最後一個水平對齊屬性是 justify。

在兩端對齊文字中,文字行的左右兩端都放在父元素的內邊界上。然後,調整單詞和字母間的間隔,使各行的長度恰好相等。您也許已經注意到了,兩端對齊文字在列印領域很常見。

需要注意的是,要由使用者代理(而不是 CSS)來確定兩端對齊文字如何拉伸,以填滿父元素左右邊界之間的空間。

- 字間隔(詞間距) word-spacing

改變字(單詞)之間的標準間隔。其預設值 normal 與設定值為 0 是一樣的。

word-spacing 屬性接受一個正長度值或負長度值。

正值 - 遠離 負值 - 靠近

- 字母間隔 letter-spacing

與 word-spacing 的區別在於,字母間隔修改的是字元或字母之間的間隔。

與 word-spacing 屬性一樣,letter-spacing 屬性的可取值包括所有長度。

預設關鍵字是 normal(這與 letter-spacing:0 相同)。

正值 - 遠離 負值 - 靠近

字元轉換text-transform

text-transform 處理文字的大小寫。這個屬性有 4 個值:

  • none -對文字不做任何改動,將使用源文件中的原有大小寫
  • uppercase- 將文字轉換為全大寫字元
  • lowercase - 將文字轉換為全小寫字元
  • capitalize - 對每個單詞的首字母大寫

好處:

  1. 只需寫一個簡單的規則來完成這個修改,而無需修改 h1 元素本身。
  2. 如果您以後決定將所有大小寫再切換為原來的大小寫,可以更容易地完成修改。

文字裝飾 text-decoration

text-decoration 有 5 個值:

  • none  - 會關閉原本應用到一個元素上的所有裝飾
  • underline - 對元素加下劃線
  • overline - 會在文字的頂端畫一個上劃線
  • line-through - 在文字中間畫一個貫穿線,等價於 HTML 中的 S 和 strike 元素
  • blink - 讓文字閃爍,類似於 Netscape 支援的頗招非議的 blink 標記。

去掉超連結的下劃線,可以使用:  a {text-decoration: none;}

注意:如果顯式地用這樣一個規則去掉連結的下劃線,那麼錨與正常文字之間在視覺上的唯一差別就是顏色(至少預設是這樣的,不過也不能完全保證其顏色肯定有區別)。

在一個規則中結合多種裝飾

例:超連結既有下劃線,又有上劃線,則規則如下: a:link a:visited {text-decoration: underline overline;}

不過要注意的是,如果兩個不同的裝飾都與同一元素匹配,勝出規則的值會完全取代另一個值。請考慮以下的規則:

h2.stricken {text-decoration: line-through;}
h2 {text-decoration: underline overline;}

對於給定的規則,所有 class 為 stricken 的 h2 元素都只有一個貫穿線裝飾,而沒有下劃線和上劃線.因為 text-decoration 值會替換而不是累積起來。

處理空白符 white-space

white-space會影響到使用者代理對源文件中的空格、換行和 tab 字元的處理。

通過使用該屬性,可以影響瀏覽器處理字之間和文字行之間的空白符的方式。

可以用以下宣告顯式地設定這種預設行為,即丟掉多餘的空白符。如果給定這個值,換行字元(回車)會轉換為空格,一行中多個空格的序列也會轉換為一個空格。:p {white-space: normal;}

值 pre

如果將 white-space 設定為 pre,空白符不會被忽略。

注意:經測試,IE 7 以及更早版本的瀏覽器不支援該值,因此請使用非 IE 的瀏覽器來檢視上面的例項。

值 nowrap

與之相對的值是 nowrap,它會防止元素中的文字換行,除非使用了一個 br 元素。 在 CSS 中使用 nowrap 非常類似於 HTML 4 中用 <td nowrap> 將一個表單元格設定為不能換行,不過 white-space 值可以應用到任何元素。

值 pre-wrap 和 pre-line

pre-wrap,該元素中的文字會保留空白符序列,但是文字行會正常地換行。pre-line,會像正常文字中一樣合併空白符序列,但保留換行符。

注意:我們在 IE7 和 FireFox2.0 瀏覽器中測試了上面的兩個例項,但是結果是,值 pre-wrap 和 pre-line 都沒有得到很好的支援。

總結

下面的表格總結了 white-space 屬性的行為:

空白符 換行符 自動換行
pre-line 合併 保留 允許
normal 合併 忽略 允許
nowrap 合併 忽略 不允許
pre 保留 保留 不允許
pre-wrap 保留 保留 允許

文字方向

如果您閱讀的是英文書籍,就會從左到右、從上到下地閱讀,這就是英文的流方向。不過,並不是所有語言都如此。我們知道古漢語就是從右到左來閱讀的,當然還包括希伯來語和阿拉伯語等等。CSS2 引入了一個屬性來描述其方向性。

direction  影響塊級元素中文字的書寫方向、表中列布局的方向、內容水平填充其元素框的方向、以及兩端對齊元素中最後一行的位置。

註釋:對於行內元素,只有當 unicode-bidi 設定為 embed 或 bidi-override 時才會應用 direction 屬性。

direction 屬性有兩個值:ltr 和 rtl。大多數情況下,預設值是 ltr,顯示從左到右的文字。如果顯示從右到左的文字,應使用值 rtl。