如果width,內(nèi)邊距和外邊距設置為百分數(shù)值,會應用同樣的基本規(guī)則。值聲明為長度還是百分數(shù)并不重要。
百分數(shù)可能很有用。假設你希望一個元素的內(nèi)容是其包含塊寬度的2/3,左、右內(nèi)邊距分別設置為5%,左外邊距為5%,余下的為右外邊距。可以寫作:
<p style="width: 67%; padding-right: 5%; padding-lefc: 5%; margin-right: auto; margin-left: 5%;">playing percentages</p>
右外邊距會計算為包含塊寬度的18%(100%-67%-5%-5%-5%)。
不過網(wǎng)頁設計中,如果混合使用百分數(shù)和長度單位,可能很麻煩??紤]以下例子:
<p style="width: 67%; padding-right: 2em; padding-left: 2em; margin-right: auto; margin-left: 5em;"> mixed lengths</p>
在這種情況下,元素框可能定義如下:
5em + 0 + 2em + 67%+ 2em + 0 + auto =包含塊寬度
為了讓右外邊距的寬度計算為0,元素包含塊的寬度必須是27.272727em (元素內(nèi)容區(qū)寬度為18.272727em)。如果比這寬,右外邊距就會計算為一個正值,而比這窄時,右外邊距則會計算為一個負值。
如果再加入長度值,情況還會更為復雜,如下:
<p style="width: 67%; padding-right: 15px; padding-left: 10px; margin-right: auto; margin-left: 5em;">more mixed lengths</p>
另外,邊框的寬度不能是百分數(shù),而只能是長度,這就使情況更復雜了。網(wǎng)頁設計基本原則是:只使用百分數(shù)將無法創(chuàng)建完全靈活的元素布局(即所有屬性都可設置),除非你不想使用邊框。
到目前為止,我們已經(jīng)介紹了網(wǎng)頁設計中正常文本流中非替換塊級元素的水平格式化。替換塊級元素管理起來更簡單一些。非替換塊元素的所有規(guī)則同樣適用于替換塊元素,只有一個例外:如果width為auto,元素的寬度則是內(nèi)容的固有寬度。下例中的圖像寬度是20像素,因為這正是原圖像的寬度:
<img src="smile.png" style="display: block; width: auto; margin: 0;">
如果實際圖像的寬度是100像素,那么元素的寬度也將是100像素。
可以為width指定一個特定值覆蓋這個規(guī)則。假設將前例修改如下,將這個圖像顯示3次,每一次的width值都不同:
<img src="smile.png" styles="display: block; width: 25px; margin: 0;">
<img src="smile.png" style="display: block; width: 50px; margin: 0;">
<img src="smile.png" style="display: block; width: 100px; margin: 0;">
結果如圖7-12所示。
注意,元素的高度也會增加。如果網(wǎng)頁設計中一個替換元素的width不同于其固有寬度,那么height值也會成比例變化,除非height自己也顯式設置為一個特定值。反過來也一樣:如果設置了height,但width保持為auto,則width將隨height的變化成比例調(diào)整。