响应式布局和自适应布局详解
響應(yīng)式布局等于流動(dòng)網(wǎng)格布局,而自適應(yīng)布局等于使用固定分割點(diǎn)來進(jìn)行布局。
自適應(yīng)布局給了你更多設(shè)計(jì)的空間,因?yàn)槟阒挥每紤]幾種不同的狀態(tài)。而在響應(yīng)式布局中你卻得考慮上百種不同的狀態(tài)。雖然絕大部分狀態(tài)差異較小,但仍然也算做差異。它使得把握設(shè)計(jì)最終效果變得更難,同樣讓響應(yīng)式布局更加的難以測(cè)試和預(yù)測(cè)。但同時(shí)說難,這也算是響應(yīng)式布局美的所在。在考慮到表層級(jí)別不確定因素的過程中,你也會(huì)因此更好的掌握一些基礎(chǔ)知識(shí)。當(dāng)然,要做到精確到像素級(jí)別的去預(yù)測(cè)設(shè)943*684像素視區(qū)里的樣子是很難的,但是你至少可以很輕松的確定它是能夠正常工作的,因?yàn)轫撁娴幕咎匦院筒季纸Y(jié)構(gòu)都是根據(jù)語義結(jié)構(gòu)來部署的。
響應(yīng)式布局概念
Responsive design,意在實(shí)現(xiàn)不同屏幕分辨率的終端上瀏覽網(wǎng)頁的不同展示方式。通過響應(yīng)式設(shè)計(jì)能使網(wǎng)站在手機(jī)和平板電腦上有更好的瀏覽閱讀體驗(yàn)。
經(jīng)過不停地學(xué)習(xí)和實(shí)踐,如今總結(jié)響應(yīng)式設(shè)計(jì)的方法和注意點(diǎn)。其實(shí)很簡(jiǎn)單。
響應(yīng)式設(shè)計(jì)的步驟
1. 設(shè)置 Meta 標(biāo)簽
大多數(shù)移動(dòng)瀏覽器將HTML頁面放大為寬的視圖(viewport)以符合屏幕分辨率。你可以使用視圖的meta標(biāo)簽來進(jìn)行重置。下面的視圖標(biāo)簽告訴瀏覽器,使用設(shè)備的寬度作為視圖寬度并禁止初始的縮放。在<head>標(biāo)簽里加入這個(gè)meta標(biāo)簽。
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
[1](user-scalable = no 屬性能夠解決 iPad 切換橫屏之后觸摸才能回到具體尺寸的問題。 )
3. 通過媒介查詢來設(shè)置樣式 Media Queries
Media Queries 是響應(yīng)式設(shè)計(jì)的核心。
它根據(jù)條件告訴瀏覽器如何為指定視圖寬度渲染頁面。假如一個(gè)終端的分辨率小于 980px,那么可以這樣寫:
@media screen and (max-width: 980px) {
#head { … }
#content { … }
#footer { … }
}
這里的樣式就會(huì)覆蓋上面已經(jīng)定義好的樣式。
4. 設(shè)置多種試圖寬度
假如我們要設(shè)定兼容 iPad 和 iPhone 的視圖,那么可以這樣設(shè)置:
/** iPad **/
@media only screen and (min-width: 768px) and (max-width: 1024px) {}
/** iPhone **/
@media only screen and (min-width: 320px) and (max-width: 767px) {}
恩,差不多就這樣的一個(gè)原理。
一些注意的
1. 寬度需要使用百分比
例如這樣:
#head { width: 100% }
#content { width: 50%; }
2. 處理圖片縮放的方法
- 簡(jiǎn)單的解決方法可以使用百分比,但這樣不友好,會(huì)放大或者縮小圖片。那么可以嘗試給圖片指定的最大寬度為百分比。假如圖片超過了,就縮小。假如圖片小了,就原尺寸輸出。
img { width: auto; max-width: 100%; }
- 用
::before和::after偽元素 +content 屬性來動(dòng)態(tài)顯示一些內(nèi)容或者做其它很酷的事情,在 CSS3 中,任何元素都可以使用 content 屬性了,這個(gè)方法就是結(jié)合 css3 的 attr 屬性和 HTML 自定義屬性的功能: HTML 結(jié)構(gòu):
<img src="image.jpg"
data-src-600px="image-600px.jpg"
data-src-800px="image-800px.jpg"
alt="">
CSS 控制:
@media (min-device-width:600px) {
img[data-src-600px] {
content: attr(data-src-600px, url);
}
}
@media (min-device-width:800px) {
img[data-src-800px] {
content: attr(data-src-800px, url);
}
}
3. 其他屬性
例如 pre ,iframe,video 等,都需要和img一樣控制好寬度。對(duì)于table,建議不要增加 padding 屬性,低分辨率下使用內(nèi)容居中:
table?th, table?td { padding: 0 0; text-align: center; }
以上內(nèi)容和代碼來自:掌心,感謝,歡迎查看我之前做過的響應(yīng)式設(shè)計(jì):查看演示
更多資源
Morten Hjerde和他的同事們對(duì)2005至2008年市場(chǎng)中的400余種移動(dòng)設(shè)備進(jìn)行了統(tǒng)計(jì)(查看報(bào)告),下圖展示了大致的統(tǒng)計(jì)結(jié)果:
打造布局結(jié)構(gòu)
我們可以監(jiān)測(cè)頁面布局隨著不同的瀏覽環(huán)境而產(chǎn)生的變化,如果它們變的過窄過短或是過寬過長(zhǎng),則通過一個(gè)子級(jí)樣式表來繼承主樣式表的設(shè)定,并專門針對(duì)某些布局結(jié)構(gòu)進(jìn)行樣式覆寫。我們來看下代碼示例:
/* Default styles that will carry to the child style sheet */
html,body{
background...
font...
color...
}
h1,h2,h3{}
p, blockquote, pre, code, ol, ul{}
/* Structural elements */
#wrapper{
width: 80%;
margin: 0 auto;
background: #fff;
padding: 20px;
}
#content{
width: 54%;
float: left;
margin-right: 3%;
}
#sidebar-left{
width: 20%;
float: left;
margin-right: 3%;
}
#sidebar-right{
width: 20%;
float: left;
}
下面的代碼可以放在子級(jí)樣式表mobile.css中,專門針對(duì)移動(dòng)設(shè)備進(jìn)行樣式覆寫:
#wrapper{
width: 90%;
}
#content{
width: 100%;
}
#sidebar-left{
width: 100%;
clear: both;
/* Additional styling for our new layout */
border-top: 1px solid #ccc;
margin-top: 20px;
}
#sidebar-right{
width: 100%;
clear: both;
/* Additional styling for our new layout */
border-top: 1px solid #ccc;
margin-top: 20px;
}
大致的視覺效果如下圖所示:
圖中上半部分是大屏幕設(shè)備所顯示的完整頁面,下面的則是該頁面在小屏幕設(shè)備的呈現(xiàn)方式。頁面HTML代碼如下:
Media Queries
Ethan的文章中的“Meet the media query”部分有更多的范例及解釋。更有效率的做法是,將多個(gè)media queries整合在一個(gè)樣式表文件中
/* Smartphones (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 320px)
and (max-device-width : 480px) {
/* Styles */
}
/* Smartphones (landscape) ----------- */
@media only screen
and (min-width : 321px) {
/* Styles */
}
/* Smartphones (portrait) ----------- */
@media only screen
and (max-width : 320px) {
/* Styles */
}
譯文:流動(dòng)網(wǎng)格
總結(jié)
以上是生活随笔為你收集整理的响应式布局和自适应布局详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8大天赋潜能(人类八大天赋)
- 下一篇: 【渝粤教育】国家开放大学2018年春季