[粗]中文排版CSS心得

2010-08-28 10:48:18來源:西部e網(wǎng)作者:

    數(shù)月來學習web標準,并遵循標準設計和制作web頁面。一直想寫點什么,整理一下自己的心得體會。寫這篇文章,主要是針對中文排版設計,英文排版因為很少做,所以不涉及。

    先介紹如何設定字體、顏色、大小、段落空白等比較簡單的應用,后面再介紹下比如首字下沉、首行縮進。最后講一些常用的web頁面中文排版,比如中文字的截斷、固定寬度詞內折行(word-wrapword-break)等等。因為只是寫一些應用方面的心得,如果需要完整的CSS屬性介紹,請參考CSS手冊。

1、如何設定文字字體、顏色、大小 —— 使用font

font-style設定斜體,比如font-style: italic;
font-weight
設定文字粗細,比如
font-weight: bold;
font-size
設定文字大小,比如font-size: 12px;(或者9pt,不同單位顯示問題參考CSS手冊)

line-height
設定行距,比如line-height: 150%;
color
設定文字顏色(注意不是font-color),比如
color: red;
font-family
設定字體,比如font-family : "Lucida Grande", Verdana, Lucida, Arial, Helvetica, 宋體,sans-serif;(這是通用的寫法)

以上都可以寫在一行font屬性里(除了color屬性需要單獨寫):
font: italic bold 12px/150% "Lucida Grande", Verdana, Lucida, Arial, Helvetica,
宋體,sans-serif;

2、如何控制段落排版 —— 使用margin,text-align

中文段落使用<p>標簽,左右(相當于縮進)、段前段后的空白,都可以用margin。比如:
p{
 margin: 18px 6px 6px 18px; /*
分別是上、右、下、左,十二點開始的順時針方向*/
}
文字的對齊方式用text-align,比如:

p{
 text-align: center;  /*
居中對齊*/
}
對齊方式還有left、rightjustify(兩端對齊)

PS.談起margin,我習慣于在寫CSS的時候為所有的標簽定義margin: 0; 因為時而出現(xiàn)由于默認的margin值導致頁面排版問題,而自己找不到原因(特別注意的是ul/ol/p/dt/dd等標簽)

3、豎排文字 —— 使用writing-mode

writing-mode屬性有兩個值lr-tbtb-rl,前者是默認的左-右、上-下,后者是上-下、右-左。
比如:
p{
 writing-mode: tb-rl;
}
可以結合direction排版。

4、項目符號的問題 —— 使用list-style

CSS里項目符號有disc(實心圓點)、circle(空心圓圈)、square(實心方塊)、decimal(阿拉伯數(shù)字)、lower-roman(小寫羅馬數(shù)字)、upper-roman(大寫羅馬數(shù)字)、lower-alpha(小寫英文字母)、upper-alpha(大寫英文字母)、none(無)。比如設定一個列表(ulol)的項目符號為方塊,如:
li{
 list-style: square;
}
另外list-style還有一些值,比如可以采用一些小圖片作為項目符號,在list-style下直接寫url(“圖片地址”)就可以了。注意如果一個項目列表的左外補。margin-left)設為零的時候,list-style-position: outside(默認是outside)的項目符號不會顯示?上У氖巧鲜龅捻椖糠査坪醪⒉荒茉O定大小,圓點和方塊始終是那么點。并且不能設定垂直方向上的對齊。

5、首字下沉 —— 使用:first-letter

偽對象:first-letter配合font-size、float可以制作首字下沉效果。
比如:
p:first-letter{
 padding: 6px;
 font-size: 32pt;
 float: left;
}

6、首行縮進 —— 使用text-indent

text-indent可以使得容器內首行縮進一定單位。比如中文段落一般每段前空兩個漢字。可以這么寫:
p{
 text-indent: 2em; /*em
是相對單位,2em即現(xiàn)在一個字大小的兩倍*/
}
如果font-size12px的話,那么text-indent: 2em則縮進24px。

7、關于漢字注音 —— 使用ruby標簽和ruby-align屬性

比如說<ruby>注音<rt style="font-size: 11px;">zhu yin</rt></ruby>,可以利用ruby-align設置對齊方式。這是在CSS手冊里面看到的,具體可以自行查閱ruby-align項。

8、固定寬度漢字截斷 —— 使用text-overflow

用后臺語言可以對從數(shù)據(jù)庫里的字段內容做截斷處理,比如說截12個漢字(之后用省略號)。但是有時還需要html標簽的過濾等,而用CSS來控制則沒有這個問題。比如對列表應用以下樣式:
li{
 overflow:hidden;
 text-overflow:ellipsis;
 white-space:nowrap;
}
不過只能處理文字在一行上的截斷,不能處理多行。

9、固定寬度漢字(詞)折行 —— 使用word-break

舉個例子,比如說要在一個固定寬度容器里面顯示很多地名(假設以空格分隔),為了避免地名中間斷開(即一個字在上面而另一個字折斷到下一行去了)。則可以使用word-break。比如:
<div style="width:210px;height: 200px;background: #ccc;word-break:keep-all">
南京上海 上海上 上海上海 南京 上海上海上海 南京上海 上海 南京上海 上海 南京 上海 南京 上海 南京 上海 南京 上海 南京 上海 南京上海 上海 南京上海 上海
</div>
值得注意的是里面的空格不能以&nbsp;代替(最少要有一個軟空格)。

贊助商鏈接: