具有靈活變動(dòng)寬度特性的布局,也被稱為流式布局,這種布局會(huì)根據(jù)網(wǎng)頁瀏覽器的窗口大小相應(yīng)地調(diào)整自己的寬度。在這類布局中,容器中的主體部分的寬度以當(dāng)前瀏覽器的窗口寬度為基準(zhǔn),按照一定的百分比進(jìn)行定義。當(dāng)瀏覽器的尺寸發(fā)生變化時(shí),布局也發(fā)生變化,因?yàn)橛脩粽{(diào)整窗口的操作已經(jīng)改變了布局所依賴的基準(zhǔn)。換句話說,這類布局中各區(qū)域的寬度會(huì)隨著用戶瀏覽器窗口的調(diào)整自動(dòng)變化。所以,如果用戶覺得正在瀏覽的文章的行寬不是很合適,通過簡單地調(diào)整窗口尺寸,內(nèi)容區(qū)域就會(huì)自動(dòng)進(jìn)行調(diào)整。
這類布局中,布局元素之間的關(guān)系至關(guān)重要,因?yàn)椴季种凶釉氐膶挾仁且愿冈氐陌俜直仍O(shè)置的(不是相鄰的元素)。例如,如果布局容器的寬度設(shè)置為90%(他的父元素為瀏覽器窗口),導(dǎo)航區(qū)的寬度設(shè)置為80%,那么導(dǎo)航區(qū)的寬度就是瀏覽器寬度的72%(1×0.9×0.8=0.72)。由此可見,設(shè)計(jì)流式布局需要對(duì)設(shè)計(jì)的結(jié)構(gòu)有深度的了解。對(duì)設(shè)計(jì)師而言,過程也許痛苦,但是成功的設(shè)計(jì)會(huì)讓網(wǎng)站更加靈活地面對(duì)使用不同終端的用戶[注釋]。
流式布局能夠盡可能多地使用瀏覽器的可用空間,設(shè)計(jì)師可以有足夠的空間來平均排布頁面中的內(nèi)容。設(shè)計(jì)得當(dāng)?shù)牟季挚梢员3挚瞻讌^(qū)域始終一致,不管瀏覽器或者屏幕的分辨率如何變化,這樣的設(shè)計(jì)顯得更加一致并且對(duì)用戶友好。同時(shí),這類布局也消除了低分辨率顯示器上刺眼的水平滾動(dòng)條。
和固定寬度布局不同,流式布局賦予用戶更大的自由來調(diào)整布局的寬度。
和固定寬度布局不同,流式布局賦予用戶更大的自由來調(diào)整布局的寬度。伴隨著這種自由,青島網(wǎng)站設(shè)計(jì)師將嚴(yán)格、一致的像素布局轉(zhuǎn)移到一種更加靈活(也因此更有風(fēng)險(xiǎn))的環(huán)境中來。這時(shí)對(duì)網(wǎng)站中特定元素之間比例關(guān)系的定義變得相當(dāng)抽象和困難。這也正是多數(shù)設(shè)計(jì)師避免使用流式布局的原因,這種布局剝奪了設(shè)計(jì)師在像素級(jí)精度上預(yù)測(cè)定位元素的能力。
設(shè)計(jì)師在用相對(duì)值替代絕對(duì)值的過程中,經(jīng)常將這些值進(jìn)位或者去位(例如,將15.43333% 變成15.43% 或者15%),這樣設(shè)計(jì)就變得更加不精確 。最后的設(shè)計(jì)也許在一些低分辨率屏幕上表現(xiàn)良好,但是在高分辨率情況下會(huì)發(fā)生奇怪的現(xiàn)象,諸如布局中顯著的空白、內(nèi)容區(qū)太寬難以閱讀等。
事實(shí)上,內(nèi)容區(qū)過寬的結(jié)果是流式布局最顯著的缺點(diǎn)。由于內(nèi)容區(qū)的寬度取決于用戶視窗的大小,寬屏的用戶會(huì)發(fā)現(xiàn)每一行都是如此的長,以至于閱讀起來很不舒服。如果一個(gè)使用流式布局的頁面中沒有這么多的文字,用戶將看到孤零零的一行字,側(cè)邊欄高得非常不協(xié)調(diào),周邊還充斥著大量的空白。
為了獲得最佳的閱讀效果(每行47 到86 個(gè)英文字母),設(shè)計(jì)師通常為內(nèi)容區(qū) #content-block[注釋]設(shè)置在此基礎(chǔ)上加10% 的寬度。除非設(shè)計(jì)的可讀性會(huì)在低分辨率情況下變得很糟糕,一般不會(huì)設(shè)置最小寬度。
在CSS 中,使用CSS 屬性“max-width”來定義布局的最大寬度。幾乎所有
的主流瀏覽器都支持這個(gè)屬性(IE 7+、Firefox 1+、Safari 2+、Opera 9.2+),當(dāng)然IE 除外。
為解決這個(gè)問題,設(shè)計(jì)師通常會(huì)在內(nèi)容區(qū)域設(shè)置一個(gè)最大寬度,以此來將布局限制到一個(gè)較為理想的寬度。
代碼檢查用戶相對(duì)瀏覽器寬度的字體尺寸設(shè)置(以pt 為單位)。Tofte 認(rèn)為,不管在什么情況下,使用默認(rèn)12pt 的字體時(shí),500px(像素)要比30em 寬,所以上面的代碼中使用了30em 作為布局的寬度。
其原理是,如果內(nèi)容部分的寬度大于500 像素與12 的比值乘以用戶字體的設(shè)置,就將寬度設(shè)置為30em。相反的情況下,讓寬度保持自動(dòng)( 使用了“auto”屬性) 。
由于動(dòng)態(tài)樣式屬性沒有包含在W3C 的CSS2 規(guī)范中,使用這種方法會(huì)讓樣式表無法通過驗(yàn)證。讀者可以根據(jù)自身情況使用,能夠?yàn)槭袌?chǎng)上仍然是最流行的瀏覽器提供帶有最小寬度和最大寬度的流式布局,付出這點(diǎn)代價(jià)也許是微不足道的。
Clearleft 山東網(wǎng)站制作就是使用了自適應(yīng)寬度布局的例子。下面兩幅圖展示了網(wǎng)站在1280 和800 像素情況下的表現(xiàn)。注意看內(nèi)容區(qū)域是如何自動(dòng)調(diào)整“We makewebsites better”這句話的,在1280 像素時(shí)的兩行變成了800 像素時(shí)的三行。
在為自適應(yīng)布局選擇一個(gè)合適的寬度時(shí),使用“width :auto”或者其他的百分比值會(huì)非常合理,這樣確保了布局自動(dòng)占據(jù)瀏覽器的可用空間。對(duì)于最小寬度,可以使用像素值,例如760(像素)。這個(gè)限制確保了所有自適應(yīng)布局即使在最低的分辨率情況下仍保持可讀。至于最大寬度,通常的做法是使用em 值(例如90em),這樣就能在文本寬度不失控的情況下,保持不同分辨率情況下的穩(wěn)定。讓人高興的是,如果用戶調(diào)整瀏覽器的字體設(shè)置,最大寬度會(huì)發(fā)生相應(yīng)的變化。
一個(gè)經(jīng)典的計(jì)算這個(gè)比例的方法是,通過將給定像素高度元素與容器的尺寸相除得到的字體大?。瓷舷挛模?。
在實(shí)現(xiàn)自適應(yīng)布局時(shí),我們使用了相對(duì)值來表示外邊距和內(nèi)邊距(當(dāng)時(shí),是相對(duì)于視口的寬度),這樣當(dāng)窗口尺寸變化時(shí),外邊距和內(nèi)邊距同樣發(fā)生變化,同時(shí)保持了比例和尺寸一直靈活。這種技術(shù)被稱為“concertina padding”,由Richard Rutter 提出(“Web Standards Group :Ten Questions for RichardRutter”, webstandardsgroup.org)。使用這種技術(shù)后,當(dāng)頁面尺寸改變時(shí),外邊距和內(nèi)邊距同樣發(fā)生變化,同時(shí)會(huì)檢查內(nèi)容區(qū)以及文本行的長度。
Copyright All Rights GreatGoal Design co.,ltd. 魯ICP備16002128號(hào)-3