參考英文文獻:
https://alistapart.com/article/responsive-web-design
來源于:
http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html
作者:?阮一峰
日期:?2012年5月 1日
評論區蠻有趣的
底部為第一部分
二、允許網頁寬度自動調整
"自適應網頁設計"到底是怎么做到的?其實并不難。
首先,在網頁代碼的頭部,加入一行viewport元標簽。
<meta name="viewport" content="width=device-width, initial-scale=1" />
viewport是網頁默認的寬度和高度,上面這行代碼的意思是,網頁寬度默認等于屏幕寬度(width=device-width),原始縮放比例(initial-scale=1)為1.0,即網頁初始大小占屏幕面積的100%。
所有主流瀏覽器都支持這個設置,包括IE9。對于那些老式瀏覽器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
補充一:https://www.cnblogs.com/eyed/p/7872521.html
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
在網頁的中增加以上這句話,可以讓網頁的寬度自動適應手機屏幕的寬度,下面是這些屬性的解釋:
1)width=device-width :表示寬度是設備屏幕的寬度
2)initial-scale=1.0:表示初始的縮放比例,1.0就是占網頁的100%
3)minimum-scale=1.0:表示最小的縮放比例
4)maximum-scale=1.0:表示最大的縮放比例
5)user-scalable=no:表示用戶是否可以調整縮放比例
補充二:
viewport設置屬性如下:來源
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- width:可設定數值,或者指定為?device-width
- height:可設定數值,或者指定為?device-height
- initial-scale:第一次進入頁面的初始比例
- minimum-scale:允許縮小最小比例
- maximum-scale:允許放大最大比例
- user-scalable:允許使用者縮放,1?or?0?(yes?or?no)
編譯過程會轉化成如下的語義:
@viewport {
?
????width: device-width;
?
????initial-scale: 1.0
?
}
device-width?,主要是為了讓整個頁面寬度與手機可視寬度相同,這樣就可以簡單相容于不同機型屏幕大小,如果這邊width沒有設定的話,就會依照html/css給予的width當作預設值。
因為解析度不同,device-width有時候不一定是view?width,所以在類似iphone?4高解析度機器上,device-width=320?,可是實際解析度為480,這時候就需要利用javascript針對UA下去做動態調整。
user-scalable,這個屬性可以讓使用者能否放大、縮小頁面,如果頁面不允許手機使用者縮放,就直接設定0或者no,反之要啟動縮放功能,就設置1或者是yes。
三、不使用絕對寬度
由于網頁會根據屏幕寬度調整布局,所以不能使用絕對寬度的布局,也不能使用具有絕對寬度的元素。這一條非常重要。
具體說,CSS代碼不能指定像素寬度:
width:xxx px;
只能指定百分比寬度:
width: xx%;
或者
width:auto;
四、相對大小的字體
字體也不能使用絕對大?。╬x),而只能使用相對大?。╡m)。
body {
font: normal 100% Helvetica, Arial, sans-serif;
}
上面的代碼指定,字體大小是頁面默認大小的100%,即16像素。
h1 {
font-size: 1.5em;?
}
然后,h1的大小是默認大小的1.5倍,即24像素(24/16=1.5)。
small {
font-size: 0.875em;
}
small元素的大小是默認大小的0.875倍,即14像素(14/16=0.875)。
補充:來源
這里順便說說?px??pt?em?rem區別:
px是pixel,像素,是屏幕上顯示數據的最基本的點,在HTML中,默認的單位就是px;
pt是point,是印刷行業常用單位,等于1/72英寸。
em才是真正的“相對單位”(百分比嘛,當然是相對),而px和pt都是絕對單位(都有固定值)。所以,一般移動終端布局用em比較合適。
rem是css3的出現,同時引進新的單位,而rem是相對于根元素,這樣就意味著,我們只需要在根元素確定一個參考值,在根元素中設置多大的字體,這完全可以根據您自己的需要。
五、流動布局(fluid grid)
"流動布局"的含義是,各個區塊的位置都是浮動的,不是固定不變的。
.main {
float: right;
width: 70%;?
}
.leftBar {
float: left;
width: 25%;
}
float的好處是,如果寬度太小,放不下兩個元素,后面的元素會自動滾動到前面元素的下方,不會在水平方向overflow(溢出),避免了水平滾動條的出現。
另外,絕對定位(position: absolute)的使用,也要非常小心。
六、選擇加載CSS
"自適應網頁設計"的核心,就是CSS3引入的Media Query模塊。
它的意思就是,自動探測屏幕寬度,然后加載相應的CSS文件。
"stylesheet" type="text/css"
media="screen and (max-device-width: 400px)"
href="tinyScreen.css" />
上面的代碼意思是,如果屏幕寬度小于400像素(max-device-width: 400px),就加載tinyScreen.css文件。
"stylesheet" type="text/css"
media="screen and (min-width: 400px) and (max-device-width: 600px)"
href="smallScreen.css" />
如果屏幕寬度在400像素到600像素之間,則加載smallScreen.css文件。
除了用html標簽加載CSS文件,還可以在現有CSS文件中加載。
@import url("tinyScreen.css") screen and (max-device-width: 400px);
七、CSS的@media規則
詳細介紹:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media
同一個CSS文件中,也可以根據不同的屏幕分辨率,選擇應用不同的CSS規則。
@media screen and (max-device-width: 400px) {
.column {
float: none;
width:auto;
}
#sidebar {
display:none;
}
}
上面的代碼意思是,如果屏幕寬度小于400像素,則column塊取消浮動(float:none)、寬度自動調節(width:auto),sidebar塊不顯示(display:none)。
八、圖片的自適應(fluid image)
除了布局和文本,"自適應網頁設計"還必須實現圖片的自動縮放。
這只要一行CSS代碼:
img { max-width: 100%;}
這行代碼對于大多數嵌入網頁的視頻也有效,所以可以寫成:
img, object { max-width: 100%;}
老版本的IE不支持max-width,所以只好寫成:
img { width: 100%; }
此外,windows平臺縮放圖片時,可能出現圖像失真現象。這時,可以嘗試使用IE的專有命令:
img { -ms-interpolation-mode: bicubic; }
或者,Ethan Marcotte的imgSizer.js。
addLoadEvent(function() {
var imgs = document.getElementById("content").getElementsByTagName("img");
imgSizer.collate(imgs);
});
不過,有條件的話,最好還是根據不同大小的屏幕,加載不同分辨率的圖片。有很多方法可以做到這一條,服務器端和客戶端都可以實現。
隨著3G的普及,越來越多的人使用手機上網。
移動設備正超過桌面設備,成為訪問互聯網的最常見終端。于是,網頁設計師不得不面對一個難題:如何才能在不同大小的設備上呈現同樣的網頁?

手機的屏幕比較小,寬度通常在600像素以下;PC的屏幕寬度,一般都在1000像素以上(目前主流寬度是1366×768),有的還達到了2000像素。同樣的內容,要在大小迥異的屏幕上,都呈現出滿意的效果,并不是一件容易的事。
很多網站的解決方法,是為不同的設備提供不同的網頁,比如專門提供一個mobile版本,或者iPhone / iPad版本。這樣做固然保證了效果,但是比較麻煩,同時要維護好幾個版本,而且如果一個網站有多個portal(入口),會大大增加架構設計的復雜度。
于是,很早就有人設想,能不能"一次設計,普遍適用",讓同一張網頁自動適應不同大小的屏幕,根據屏幕寬度,自動調整布局(layout)?

一、"自適應網頁設計"的概念
2010年,Ethan Marcotte提出了"自適應網頁設計"(Responsive Web Design)這個名詞,指可以自動識別屏幕寬度、并做出相應調整的網頁設計。
他制作了一個范例,里面是《福爾摩斯歷險記》六個主人公的頭像。如果屏幕寬度大于1300像素,則6張圖片并排在一行。

如果屏幕寬度在600像素到1300像素之間,則6張圖片分成兩行。

如果屏幕寬度在400像素到600像素之間,則導航欄移到網頁頭部。

如果屏幕寬度在400像素以下,則6張圖片分成三行。

mediaqueri.es上面有更多這樣的例子。
這里還有一個測試小工具,可以在一張網頁上,同時顯示不同分辨率屏幕的測試效果,我推薦安裝。
(完)
文檔信息
- 版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)
- 發表日期:?2012年5月 1日
- 更多內容:?檔案???開發者手冊
- 文集:《前方的路》,《未來世界的幸存者》
- 社交媒體:
?twitter,
?weibo
另外的:
來源于:
In?CSS3,HTML5?on 2015年04月14日 by?TAT.sheran?view: 21,001
目前非常流行自適應設計與響應式設計,而且經常讓人混淆,自適應設計不應與自適應布局混為一談,它們是完全不一樣的概念。
在這先說明下這兩者的異同:
自從移動終端飛速發展以來,各種各樣的機型突飛猛進,很多網站的解決方法,是為不同的設備提供不同的網頁,比如專門提供一個mobile版本,或者iPhone/iPad版本。這樣做固然保證了效果,但是比較麻煩,同時要維護好幾個版本,而且如果一個網站有多個portal(入口),會大大增加架構設計的復雜度。
于是,很早就有人設想,能不能"一次設計,普遍適用",讓同一張網頁自動適應不同大小的屏幕,根據屏幕寬度,自動調整布局(layout)?
2010年,Ethan?Marcotte提出了"自適應網頁設計"(Responsive?Web?Design)這個名詞,指可以自動識別屏幕寬度、并做出相應調整的網頁設計。

圖片來源http://mashable.com/2012/12/11/responsive-web-design/
如圖所示就叫做自適應布局。自適應布局有它的使用價值,在于它能夠提供一種更加實用的解決方案,使得項目的實現成本更低,并且更加易于測試。一個自適應布局可以被看作是響應式布局的一個更加廉價的替代品,會在項目資源緊缺的情況下更具有吸引力。
而在響應式布局中你卻要考慮上百種不同的狀態:
響應式網頁設計是自適應網頁設計的子集。響應式網頁設計指的是頁面的布局(流動網格、靈活的圖像及媒介查詢)??傮w目標就是去解決設備多樣化問題。
響應式布局等于流動網格布局,而自適應布局等于使用固定分割點來進行布局。
當固定寬度與流動寬度結合起來時,自適應布局就是一種響應式設計,而不僅僅是它的一種替代方法。?
更多:
及時雨