響應式設計詳解

響應式并不一定是最好的選擇

如果一個點餐網站預算充足,定制一個手機移動版,可以基于GPS在附近店家點餐或者一個dashboard網站有大量數據內容和管理指令,那么單獨的響應式設計可能遠遠不足

如果大多用戶使用IE7,8或者更低版本那么響應式意義也不大


響應式設計是基于流動布局、彈性圖片、彈性表格???、彈性視頻和媒體查詢等技術的組合。是用百分比布局創建流動的彈性界面,同時使用媒體查詢,來限制元素的變動范圍。

流動布局不固定div的寬度,而是采用百分比或者em,rem。需要注意的是當em的百分比尺寸時,目標元素尺寸÷上下文元素尺寸=百分比尺寸, 上下文尺寸并不一定永遠是父元素的大小。

比如

默認瀏覽器文字大小是 16px,假設設計稿里 h1 為 69px, span 為 38px,line-height 為 40px,可以看到元素的文字大小(38px)是相對于其父元素的文字大小(69px)而言的,而它的行高(40px)則是相對于其本身的文字大小(38px)而言,所以我們不能一概而論認為上下文元素就是等同于父級元素。

工作原理

應用css3的媒體查詢,創建一個包和各種設備尺寸樣式的CSS。一旦頁面在設備上加載,此時會先檢查視口大小,然后加載特定樣式。

viewport視口

視口是可視區域大小之瀏覽器窗口內的內容區域,不包含工具欄、標簽欄等。

屏幕尺寸screen.width

設備的物理顯示區域

grid view 柵格化

柵格化就是頁面被分成多列。一般響應式的柵格化會分成12列,總寬度100%,能夠根據窗口大小變化收縮和擴展。首先要保證所有的html元素有box-sizing屬性并設置為border-box。這讓padding和border都算入總的width和height中。即:

*{

box-sizing: border-box;

}

.col-1 {

?width: 8.33%;

}

.col-2{

width: 16.66%;

}

....

[class* = "col-"] {

?float

}

media queries 媒體查詢

1. @media screen and (max-width:960 px){

? ? ? ? body{

? ? ? ? ? ? ?...

? ? ? ? ?}

? ? ? ?} ? ?

@media screen and (max-width:550 px){

body{

...

}

}

???順序有講究吧 從大到小

對于老版本不支持媒體查詢,可以引入polyfill腳本(膩子腳本polyfill目的就是填平舊版本瀏覽器對html5、css3的支持上的缺陷,基于js實現進行兼容修復)。這樣的腳本有Respond.js,css3-meadiaqueries.js...

2.HTML4和css2中可以通過<link>標簽的media屬性為樣式表制定設備類型,有8種,screen和print為常見,打印時用襯線字體顯示更好的可讀性,屏幕上則用無襯線


css3中增加了更多查詢,可以設置不同類型的媒體條件。

<link rel="stylesheet" media="screen and (orientation: portrait) and (min-width:800px), projection" href="portrait.css">縱向顯示屏, projection???

<link rel="stylesheet" media="not screen and (orientation: portrait)" href="portraitcss">優先級如何???

3.@import url("phone.css") screen and (max-width: 360px); @import影響加載速度

link與@import的差別

兼容性差別,IE6以下不支持@import

加載順序差別

link支持使用js控制dom去改變樣式,@import不支持

@import在iE中會導致文件下載順序被改變,放在@import之后的script文件會在css之前被下載執行,這樣可能導致js在進行與樣式相關操作的時候出錯

圖片

1. img, object,video,embed { max-width: 100%,height: auto} /object embed???/

如果用{width: 100%}圖片也能伸縮但可能超過原大小

2. 給外層#wrapper設置max-width限制流體布局被拉大

#wrapper{

?margin-left: auto;

?margin-right: auto;

?width:96%;

?max-width: 1414px;

}

???為啥同時有width max-width

其實應該為不同屏幕提供不同尺寸的圖片。

視頻

1. Safari只允許在<video>和<audio>中使用MP4、H.264、AAC媒體文件,而firefox和opera只支持ogg和WebM。

<video width="640" height="480" controls autoplay proload="auto" loop poster>

<source src="video/myVideo.ogv" type="video/ogg">

<source src="video/myVideo.mpv" type="video/mp4">

</video>

video{

?max-width:100%;

height: auto;

}

2. iframe引入的視頻實現響應式

<script src="js/fitvids.js"></script>

<script>

$(document).ready(function(){

$("#content").fitVids();

});

</script>

表格

流體表格不等于響應式表格,比如一個百分比寬度表格,在小屏幕設備上可以正常顯示,但是內容整體被壓縮小,可能性差,并不代表真正的響應。

1.隱藏不必要的列

2.將橫向表頭利用css改為縱向顯示并固定位置,使用橫向滾動條,tbody上應用whitespace:nowrap;tr下應用display:inline-block???

3. 將每一行數據對應表頭顯示在一塊區域,接下來每一行以此類推。利用html data屬性將表頭寫在css中 td:before{content: attr(data-title)};???

4. 將純文本的表格在小屏幕上的餅圖或柱狀圖,以一種更豐富的形式顯示

5.用戶一張小縮略圖顯示并提示用戶點擊查看表格

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 筆記參考自《響應式Web設計:HTML5和CSS3實踐》,2013年出版內容說不上最新。如下是全書的章的目錄:第 ...
    于曉魚閱讀 945評論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,790評論 1 92
  • 因為有機會參與一個項目的早期設計,因此搭建的時候不可避免的遇到了如何滿足響應式的問題。翻閱了《響應式Web設計:H...
    tangyefei閱讀 6,449評論 2 90
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,792評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,328評論 0 11