當前位置:首頁 > 新聞中心 > 解決方案
怎么進行響應(yīng)式網(wǎng)站設(shè)計責任編輯 :李飛    文章來源 :星翼創(chuàng)想(www.wedoyun.com)    發(fā)布時間 :2014-08-07    閱讀次數(shù):3592

為什么要使用響應(yīng)式設(shè)計?

我們想讓我們的網(wǎng)站通過響應(yīng)用戶的行為、設(shè)備的屏幕大小和屏幕方向,從而在所有設(shè)備上都能用。

一個碎片化的世界

截止2013年,有成千上萬種不同的設(shè)備在瀏覽網(wǎng)頁,所以我們不可能設(shè)計出適應(yīng)所有屏幕大小的網(wǎng)頁。相反,我們必須得采用一種更加流暢的方式去設(shè)計。

移動優(yōu)先

最近一個比較火的詞叫移動優(yōu)先。它的意思是,先為移動端設(shè)計樣式,然后再根據(jù)需求去優(yōu)化更大屏幕的樣式。換句話說,假如你把移動端樣式當成網(wǎng)站的默認樣式,且以后不用去優(yōu)化它,一步到位。那就更省事了!

“假定默認使用一個靈活但簡單的布局,你的確可以適配各種瀏覽器,但這還不算是完全做到了響應(yīng)式布局。所以當我們談?wù)摗敢苿觾?yōu)先」,實際上是在說「漸進增強」。” —Ethan Marcotte

用 Min-width 進行媒體查詢( Media Queries )

現(xiàn)在來介紹一種特別的布局方式。 通過 min-width 來界定不同屏幕該如何布局。它能就近檢測出不同設(shè)備的屏幕大小(即 media queries,可直譯為媒體查詢),比在樣式表末尾或一個單獨文件中處理更簡單。

/* Small screens (default) */ html { font-size: 100%; }  /* Medium screens (640px) */ @media (min-width: 40rem) {   html { font-size: 112%; } }  /* Large screens (1024px) */ @media (min-width: 64rem) {   html { font-size: 120%; } }

步驟

1. 不是所有瀏覽器生而平等

同一份 CSS,不同瀏覽器渲染出來的效果不一樣。為了避免出現(xiàn)這種情況,你可以使用類似 Normalize.css 這種更好的 CSS 來幫助你實現(xiàn)跨瀏覽器顯示。當然,你要把這份CSS放在你樣式表最前面。

<link rel="stylesheet" href="/css/normalize.css"> <link rel="stylesheet" href="/css/grid.css">

2. 在 Viewport 里加 Meta 標簽

在你 HTML 的 head 代碼里添加 Meta 標簽。它可以使 media queries 在不同設(shè)備上起作用

<meta name="viewport" content="width=device-width, initial-scale=1">

3. CSS 盒模型

在 CSS 文件最頂端設(shè)置 box-sizing。運用 * 通用選擇器使其應(yīng)用到頁面的每個元素上。

*, *:before, *:after {   -moz-box-sizing: border-box;   -webkit-box-sizing: border-box;   box-sizing: border-box; }

4. 創(chuàng)建容器

一個容器將包含頁面所有標簽,并控制頁面最大寬度. 運用容器,讓我們的響應(yīng)式設(shè)計更進了一步!

.container {   margin: 0 auto;   max-width: 48rem;   width: 90%; }
<div class="container">   <!-- Your Content --> </div>

5. 創(chuàng)建列

在移動優(yōu)先里,列默認均是 block 級別的(可以占滿整行的寬度)。不需要額外的樣式!

<div class="container">   <div class="column">     <!-- Your Content -->   </div> </div>

6. 創(chuàng)建列寬

在大屏中,用 float: left 將列水平排列。然后運用 padding 設(shè)置相鄰兩列之間的間隙,忘掉傳統(tǒng)的margin吧。

<div class="container">   <div class="row">     <div class="column half">       <!-- Your Content -->     </div>     <div class="column half">       <!-- Your Content -->     </div>   </div> </div>
@media (min-width: 40rem) {   .column {     float: left;     padding-left: 1rem;     padding-right: 1rem;   }    .column.full { width: 100%; }   .column.two-thirds { width: 66.7%; }   .column.half { width: 50%; }   .column.third { width: 33.3%; }   .column.fourth { width: 24.95%; }   .column.flow-opposite { float: right; } }

7. 創(chuàng)建行

列應(yīng)該包裹在行內(nèi),以避免其他元素堆放在其旁邊造成布局混亂。否則就會出現(xiàn)廣為人知的 clearing 問題。出現(xiàn)之后可以使用由 Nicolas Gallagher 發(fā)明的 clearfix解決。

<div class="container">   <div class="row clearfix">     <div class="column half">       <!-- Your Content -->     </div>     <div class="column half">       <!-- Your Content -->     </div>   </div>    <div class="row clearfix">     <div class="column half">       <!-- Your Content -->     </div>     <div class="column half">       <!-- Your Content -->     </div>   </div> </div>
.clearfix:before, .clearfix:after {   content: " ";   display: table; }  .clearfix:after {   clear: both; }  .clearfix {   *zoom: 1; }

相對流( Flow Opposite )

給你想讓它在移動端優(yōu)先顯示,而在大屏幕中右側(cè)顯示的列,添加 .flow-opposite類。

<div class="container">   <div class="row clearfix">     <div class="column half flow-opposite">       <!-- Your Content -->     </div>     <div class="column half">       <!-- Your Content -->     </div>   </div> </div>
@media (min-width: 40rem) {   .column.flow-opposite { float: right; } }

文章轉(zhuǎn)載請保留網(wǎng)址:http://www.wedoyun.com/news/solutions/1001.html

掃碼添加微信
159 8667 8737
24小時電話

返回頂部