Responsive Web Design,翻譯爲自適應網頁設計或響應式網頁設計。
今天,智能手機和平板電腦等移動設備的普及程度令人難以置信,智能手機都白菜價了,幾百塊錢就能入手一部功能強勁的Android手機。人們通過這些移動設備來瀏覽網頁的頻率和時間大有趕超傳統桌面設備的趨勢,這些設備已經成爲了互聯網的最常見的終端。
不同尺寸和分辨率的屏幕給了網站開發設計者不少麻煩。很多網站的解決方法,是爲不同的設備提供不同的網頁,比如專門提供一個mobile版本,或者iPhone / iPad版本。這樣做固然保證了效果,但是比較麻煩,同時要維護好幾個版本,而且如果一個網站有多個portal(入口),會大大增加架構設計的複雜度。
2010年,Ethan Marcotte提出了“Responsive Web Design”這個名詞,指可以自動識別屏幕寬度、並做出相應調整的網頁設計。使網站的頁面佈局能夠根據不同設備和分辨率進行自動調整。
自適應網頁的實現
一、 在網頁代碼的頭部,加入一行viewport元標籤
<meta name="viewport" content="width=devide-width, initial-scale=1" />
viewport是網頁默認的寬度和高度,上面這行代碼的含義是,網頁寬度默認等於屏幕寬度(width=device-width),原始縮放比例(initial-scale=1)爲1.0,即網頁初始大小佔屏幕面積的100%。
二、不使用絕對寬度
由於網頁會根據屏幕寬度調整佈局,所以不能使用絕對寬度的佈局,也不能使用具有絕對寬度的元素。
具體說,CSS代碼不能指定像素寬度:
width:xxx px;
只能指定百分比寬度:
width:xx%;
或者
width:auto;
三、相對大小的字體
字體不能使用絕對大小(px),只能使用相對大小(em)
例:
body { font: normal 100% Helvetica, Arial, sans-serif; } small { font-size: 0.875em; }
字體大小是頁面默認大小的100%,即16像素。
small元素的大小是默認大小的0.875倍,即14像素(14/16=0.875)。
四、流動佈局
即各個區塊的位置都是浮動的,不是固定不變的。
例:
.main { float: right; width: 70%; } .leftBar { float: left; width: 25%; }
float的好處是,如果寬度太小,放不下兩個元素,後面的元素會自動滾動到前面元素的下方,不會在水平方向overflow(溢出),避免了水平滾動條的出現。
另外,絕對定位(position: absolute)的使用,也要非常小心。
五、選擇加載CSS
“自適應網頁設計”的核心就是CSS3 Media Query,它的意思就是,自動探測屏幕,然後加載相應的CSS文件。
CSS2.1定義了Media的部分,包括類型、組別和規則等。CSS並非爲了顯示器而創造,而是應用於各種各樣的媒體,比如常見的顯示器,越來愈多的手持設備,可能略顯過時的電視機等等。
而 Media Queries 的引入,其作用就是允許添加表達式用以確定媒體的情況,以此來應用不同的樣式表。換句話說,其允許我們在不改變內容的情況下,改變頁面的佈局以精確適應不同的設備,以此加強體驗。
例:
<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 400px)"
href="tinyScreen.css" />
上面代碼的意思就是,如果屏幕寬度小於等於400像素(max-device-width:400px),就加載tinyScreen.css文件。
參考:
http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html
本文+一個實例:http://www.boyige.tk/blog/?p=384