一、靜態(tài)布局(Static Layout) 1、布局特點(diǎn):不管瀏覽器尺寸具體是多少,網(wǎng)頁(yè)布局始終按照最初寫代碼時(shí)的布局來(lái)顯示。常規(guī)的pc的網(wǎng)站都是靜態(tài)(定寬度)布局的,也就是設(shè)置了min-width,這樣的話,如果小于這個(gè)寬度就會(huì)出現(xiàn)滾動(dòng)條,如果大于這個(gè)寬度則內(nèi)容居中外加背景,這種設(shè)計(jì)常見(jiàn)與pc端。 在移動(dòng)端開(kāi)發(fā)中采用靜態(tài)布局的兩種方式:(來(lái)自:流布局與響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)有什么區(qū)別?) ?。?)在viewport meta標(biāo)簽上設(shè)置width=320,頁(yè)面的各個(gè)元素也采用px作為單位。通過(guò)用JS動(dòng)態(tài)修改標(biāo)簽的initial-scale使得頁(yè)面等比縮放,從而剛好占滿整個(gè)屏幕。(見(jiàn)前端開(kāi)發(fā)-web app 變革之rem) ?。?)設(shè)在viewport meta標(biāo)簽上設(shè)置content"width=640,user-scalable=no,頁(yè)面的各個(gè)元素也采用px作為單位。由于640px超出了手機(jī)寬度,瀏覽器會(huì)自動(dòng)縮小頁(yè)面至剛好全屏。(具體見(jiàn)) 優(yōu)點(diǎn):這種布局方式對(duì)設(shè)計(jì)師和CSS編寫者來(lái)說(shuō)都是最簡(jiǎn)單的,亦沒(méi)有兼容性問(wèn)題。 缺點(diǎn):顯而易見(jiàn),即不能根據(jù)用戶的屏幕尺寸做出不同的表現(xiàn)。 當(dāng)前,大部分門戶網(wǎng)站、大部分企業(yè)的PC宣傳站點(diǎn)都采用了這種布局方式。固定像素尺寸的網(wǎng)頁(yè)是匹配固定像素尺寸顯示器的最簡(jiǎn)單辦法。但這種方法不是一種完全兼容未來(lái)網(wǎng)頁(yè)的制作方法,我們需要一些適應(yīng)未知設(shè)備的方法。 流式布局(Liquid)的特點(diǎn)(也叫"Fluid") 是頁(yè)面元素的寬度按照屏幕分辨率進(jìn)行適配調(diào)整,但整體布局不變。代表作柵欄系統(tǒng)(網(wǎng)格系統(tǒng))。 網(wǎng)頁(yè)中主要的劃分區(qū)域的尺寸使用百分?jǐn)?shù)(搭配min-*、max-*屬性使用),例如,設(shè)置網(wǎng)頁(yè)主體的寬度為80%,min-width為960px。圖片也作類似處理(width:100%, max-width一般設(shè)定為圖片本身的尺寸,防止被拉伸而失真)。 1、布局特點(diǎn):屏幕分辨率變化時(shí),頁(yè)面里元素的大小會(huì)變化而但布局不變。【這就導(dǎo)致如果屏幕太大或者太小都會(huì)導(dǎo)致元素?zé)o法正常顯示】 2、設(shè)計(jì)方法:使用%百分比定義寬度,高度大都是用px來(lái)固定住,可以根據(jù)可視區(qū)域 (viewport) 和父元素的實(shí)時(shí)尺寸進(jìn)行調(diào)整,盡可能的適應(yīng)各種分辨率。往往配合 max-width/min-width 等屬性控制尺寸流動(dòng)范圍以免過(guò)大或者過(guò)小影響閱讀。 這種布局方式在Web前端開(kāi)發(fā)的早期歷史上,用來(lái)應(yīng)對(duì)不同尺寸的PC屏幕(那時(shí)屏幕尺寸的差異不會(huì)太大),在當(dāng)今的移動(dòng)端開(kāi)發(fā)也是常用布局方式,但缺點(diǎn)明顯:主要的問(wèn)題是如果屏幕尺度跨度太大,那么在相對(duì)其原始設(shè)計(jì)而言過(guò)小或過(guò)大的屏幕上不能正常顯示。因?yàn)閷挾仁褂?百分比定義,但是高度和文字大小等大都是用px來(lái)固定,所以在大屏幕的手機(jī)下顯示效果會(huì)變成有些頁(yè)面元素寬度被拉的很長(zhǎng),但是高度、文字大小還是和原來(lái)一樣(即,這些東西無(wú)法變得“流式”),顯示非常不協(xié)調(diào)。 三、自適應(yīng)布局(Adaptive Layout) 四、響應(yīng)式布局(Responsive Layout) 隨著CSS3出現(xiàn)了媒體查詢技術(shù),又出現(xiàn)了響應(yīng)式設(shè)計(jì)的概念。響應(yīng)式設(shè)計(jì)的目標(biāo)是確保一個(gè)頁(yè)面在所有終端上(各種尺寸的PC、手機(jī)、手表、冰箱的Web瀏覽器等等)都能顯示出令人滿意的效果,對(duì)CSS編寫者而言,在實(shí)現(xiàn)上不拘泥于具體手法,但通常是糅合了流式布局+彈性布局,再搭配媒體查詢技術(shù)使用?!謩e為不同的屏幕分辨率定義布局,同時(shí),在每個(gè)布局中,應(yīng)用流式布局的理念,即頁(yè)面元素寬度隨著窗口調(diào)整而自動(dòng)適配。即:創(chuàng)建多個(gè)流體式布局,分別對(duì)應(yīng)一個(gè)屏幕分辨率范圍??梢园秧憫?yīng)式布局看作是流式布局和自適應(yīng)布局設(shè)計(jì)理念的融合。 響應(yīng)式幾乎已經(jīng)成為優(yōu)秀頁(yè)面布局的標(biāo)準(zhǔn)。 1、布局特點(diǎn):每個(gè)屏幕分辨率下面會(huì)有一個(gè)布局樣式,即元素位置和大小都會(huì)變。 2、設(shè)計(jì)方法:媒體查詢+流式布局。通常使用 @media 媒體查詢 和網(wǎng)格系統(tǒng) (Grid System) 配合相對(duì)布局單位進(jìn)行布局,實(shí)際上就是綜合響應(yīng)式、流動(dòng)等上述技術(shù)通過(guò) CSS 給單一網(wǎng)頁(yè)不同設(shè)備返回不同樣式的技術(shù)統(tǒng)稱。 優(yōu)點(diǎn):適應(yīng)pc和移動(dòng)端,如果足夠耐心,效果完美 缺點(diǎn):(1)媒體查詢是有限的,也就是可以枚舉出來(lái)的,只能適應(yīng)主流的寬高。(2)要匹配足夠多的屏幕大小,工作量不小,設(shè)計(jì)也需要多個(gè)版本。
View Code
總結(jié): 響應(yīng)式與自適應(yīng)的原理是相似的,都是檢測(cè)設(shè)備,根據(jù)不同的設(shè)備采用不同的css,而且css都是采用的百分比的,而不是固定的寬度,不同點(diǎn)是響應(yīng)式的模板在不同的設(shè)備上看上去是不一樣的,會(huì)隨著設(shè)備的改變而改變展示樣式,而自適應(yīng)不會(huì),所有的設(shè)備看起來(lái)都是一套的模板,不過(guò)是長(zhǎng)度或者圖片變小了,不會(huì)根據(jù)設(shè)備采用不同的展示樣式,流式就是采用了一些設(shè)置,當(dāng)寬度大于多少時(shí)怎么展示,小于多少時(shí)怎么展示,而且展示的方式向水流一樣,一部分一部分的加載,靜態(tài)的就是采用固定寬度的了。 流式布局是用于解決類似的設(shè)備不同分辨率之間的兼容(一般分辨率差異較少);響應(yīng)式是用于解決不用設(shè)備之間不用分辨率之間的兼容問(wèn)題(一般是指PC,平板,手機(jī)等設(shè)備之間較大的分辨率差異)。 如何實(shí)現(xiàn)響應(yīng)式布局:折騰響應(yīng)式布局設(shè)計(jì),應(yīng)運(yùn)而生的web頁(yè)面響應(yīng)布局 五、彈性布局(rem/em布局) 1、rem,em區(qū)別:rem,em都是順應(yīng)不同網(wǎng)頁(yè)字體大小展現(xiàn)而產(chǎn)生的。其中,em是相對(duì)其父元素,在實(shí)際應(yīng)用中相對(duì)而言會(huì)帶來(lái)很多不便;而rem是始終相對(duì)于html大小,即頁(yè)面根元素。 2、使用 em 或 rem 單位進(jìn)行相對(duì)布局,相對(duì)%百分比更加靈活,同時(shí)可以支持瀏覽器的字體大小調(diào)整和縮放等的正常顯示,因?yàn)閑m是相對(duì)父級(jí)元素的原因沒(méi)有得到推廣。【中國(guó)站點(diǎn)制作網(wǎng)頁(yè)的時(shí)候,習(xí)慣用CSS強(qiáng)制定義字體大小,保證每個(gè)人都看到一致的效果,包括網(wǎng)易、搜狐這些門戶網(wǎng)站在內(nèi)的大部分站點(diǎn),用的都是絕對(duì)單位px(像素)。但是,如果從網(wǎng)站易用性方面考慮,字體大小應(yīng)該是可變的,一些視力不是那么好的人需要放大字體才能看得清頁(yè)面內(nèi)容。然而,占據(jù)大部分瀏覽器市場(chǎng)的IE無(wú)法調(diào)整那些使用px作為單位的字體大小。國(guó)外人士非常重視網(wǎng)站的易用性,相當(dāng)一部分外國(guó)站點(diǎn)已經(jīng)使用em作為字體單位?!?/span>
3、這類布局的特點(diǎn)是,包裹文字的各元素的尺寸采用em/rem做單位,而頁(yè)面的主要?jiǎng)澐謪^(qū)域的尺寸仍使用百分?jǐn)?shù)或px做單位(同「流式布局」或「靜態(tài)/固定布局」)。早期瀏覽器不支持整個(gè)頁(yè)面按比例縮放,僅支持網(wǎng)頁(yè)內(nèi)文字尺寸的放大,這種情況下。使用em/rem做單位,可以使包裹文字的元素隨著文字的縮放而縮放。 4、瀏覽器的默認(rèn)字體高度一般為 Set body font-size to 62.5% for Easier em Conversion:
If you would like to use relative units (em) for your font sizes, declaring 62.5% for the font-size property of the body will make it easier to convert px to em. By doing it this way, converting to em is a matter of dividing the px value by 10 (e.g. 24px = 2.4em).
那么為什么一般多是 html{font-size:62.5%;} 而不是 html{font-size:10px;}呢? 因?yàn)橛行g覽器默認(rèn)的不是16px,或者用戶修改了瀏覽器默認(rèn)的字體大小(因?yàn)g覽器分辨率大小,視力,習(xí)慣等因素)。如果我們將其設(shè)置為10px,一定會(huì)影響在這些瀏覽器上的效果,所以最好用絕大多數(shù)用戶默認(rèn)的16作為基數(shù) * 62.5% 得到我們需要的10px。html {font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/} body {font-size: 1.4rem;/*1.4 × 10px = 14px */} h1 { font-size: 2.4rem;/*2.4 × 10px = 24px*/} 實(shí)際項(xiàng)目設(shè)置成 font-size: 62.5%可能會(huì)出現(xiàn)問(wèn)題,因?yàn)閏hrome不支持小于12px的字體,計(jì)算小于12px的時(shí)候,會(huì)默認(rèn)取12px去計(jì)算,導(dǎo)致chrome的em/rem計(jì)算不準(zhǔn)確。 針對(duì)這個(gè)現(xiàn)象,可以嘗試設(shè)置html字體為100px,body 修正為16px,這樣 0.1rem 就是 10px,而body的字體仍然是默認(rèn)大小,不影響未設(shè)置大小的元素的默認(rèn)字體的大小。 5、用em/rem定義尺寸的另一個(gè)好處是更能適應(yīng)縮進(jìn)/以字體單位padding或margin/瀏覽器設(shè)置字體尺寸等情況(因?yàn)閑m/rem相對(duì)于字體大小,會(huì)同步改變)。例如:p{ text-indent: 2em; } 6、使用rem單位的彈性布局在移動(dòng)端也很受歡迎。
工具ViewtoREM:PX轉(zhuǎn)換到REM(自動(dòng)預(yù)處理) 對(duì)于不同尺寸的屏幕,可以統(tǒng)一假設(shè)屏幕寬度為640px后編寫CSS(當(dāng)然你也可以假定統(tǒng)一為320px)。此時(shí),我們?cè)O(shè)定html元素的font-size為40px(同樣,只是舉例),然后各處(元素尺寸、文字大?。┦褂胷em作為單位,隨后搭配媒體查詢或JS,根據(jù)屏幕的大小來(lái)動(dòng)態(tài)控制html元素的font-size(特定屏幕尺寸下,html元素的font-size應(yīng)當(dāng)設(shè)置為何值,是使用這個(gè)方案時(shí)設(shè)計(jì)師和程序員需要反復(fù)考慮后確定的,以下試舉一段相關(guān)的CSS媒體查詢代碼),即可自動(dòng)改變所有用rem定義尺寸的元素的大小(且CSS編寫者在腦中進(jìn)行換算的計(jì)算過(guò)程比em簡(jiǎn)單得多)。
View Code
其實(shí)在移動(dòng)端使用所謂的彈性布局,是比較勉強(qiáng)的。移動(dòng)端彈性布局流行起來(lái)的原因歸根結(jié)底是rem單位對(duì)于(根據(jù)屏幕尺寸)調(diào)整頁(yè)面的各元素的尺寸、文字大小時(shí)比較好用。其實(shí),使用vw、vh等后起之秀的單位,可以實(shí)現(xiàn)完美的流式布局(高度和文字大小都可以變得“流式”),彈性布局就不再必要了。 優(yōu)點(diǎn):理想狀態(tài)是所有屏幕的高寬比和最初的設(shè)計(jì)高寬比一樣,或者相差不多,完美適應(yīng)。 缺點(diǎn):這種rem+js只不過(guò)是寬度自適應(yīng),高度沒(méi)有做到自適應(yīng),一些對(duì)高度,或者元素間距要求比較高的設(shè)計(jì),則這種布局沒(méi)有太大的意義。如果只是寬度自適應(yīng),更推薦響應(yīng)式設(shè)計(jì)。 響應(yīng)式和彈性布局之間的對(duì)比: 響應(yīng)式布局:改變?yōu)g覽器寬度,“布局”會(huì)隨之變化,不是一成不變的,例如導(dǎo)航欄在大屏幕下是橫排,在小屏幕下是豎排,在超小屏幕下隱藏為菜單,也就是說(shuō)如果有足夠的耐心,在每一種屏幕下都應(yīng)該有合理的布局,完美的效果。 rem布局:改變?yōu)g覽器寬度,頁(yè)面所有元素的高寬都等比例縮放,也就是大屏幕下導(dǎo)航是橫的,小屏幕下還是橫的只不過(guò)變小了。 結(jié)論: 1.如果只做pc端,那么靜態(tài)布局(定寬度)是最好的選擇;
2.如果做移動(dòng)端,且設(shè)計(jì)對(duì)高度和元素間距要求不高,那么彈性布局(rem+js)是最好的選擇,一份css+一份js調(diào)節(jié)font-size搞定;
3.如果pc,移動(dòng)要兼容,而且要求很高那么響應(yīng)式布局還是最好的選擇,前提是設(shè)計(jì)根據(jù)不同的高寬做不同的設(shè)計(jì),響應(yīng)式根據(jù)媒體查詢做不同的布局。 |
|