移動優先的響應式佈局

小火柴的藍色理想發表於2018-05-14

前面的話

  隨著移動網際網路的興起,不同裝置的解析度相差較大,如果在不同的設定上顯示同一個頁面,則使用者體驗差。響應式網頁設計是一種方法,使得一個網站能夠相容多個終端,而不用為每個終端製作特定的版本。它使得一個網站可以在任何型別的螢幕上,都可以被輕鬆地瀏覽和使用。採用響應式設計,在不同裝置中,網站會重新排列,展現出不同的設計風格,以完美的適配任何尺寸的螢幕

 

設計原則

  關於響應式設計,有漸進增加和優雅降級兩個設計原則

  漸進增強(progressive enhancement),是指基本需求得到滿足、實現,再根據不同瀏覽器及不同解析度裝置的特點,利用高階瀏覽器下的新特性提供更好的體驗。比如,圓角、陰影、動畫等

  優雅降級(graceful degradation)則正好相反,現有功能已經開發完備,但需要向下相容版本和不支援該功能的瀏覽器。雖然相容性方案的體驗不如常規方案,但保證了功能可用性

  移動優先的響應式佈局採用的是漸進增強原則,製作響應式網站時,先搞定手機版,然後再去為更大裝置去設計和開發更復雜的功能。特徵是使用min-width匹配頁面寬度。從上到下書寫樣式時,首先考慮的是移動裝置的使用場景,預設查詢的是最窄的情況,再依次考慮裝置螢幕逐漸變寬的情況

  由簡入繁易,由繁入簡難。如果是桌面優先,佈局端是桌面端程式碼,只有在media中,才是手機端程式碼,載入了多餘的桌面端程式碼。如果是圖片檔案,則下載的無用資源更多

  無論從介面設計還是程式碼執行效率的角度而言,移動優先都有明顯優勢

 

三要素

  響應式設計包括三個要素:彈性佈局、媒體查詢和彈性圖片

  彈性佈局和媒體查詢已經在其他部落格中詳細介紹,下面來重點介紹下彈性圖片

  彈性圖片,也稱為響應式圖片,是指圖片能夠跟隨父容器寬度變化而變化,同時寬度受限於父容器,不可按照圖片原始尺寸展現

  因此,最簡單的響應式圖片設定max-width為100%即可

img{
  max-width: 100%;  
}

  只有一張圖片的情況下,採用上面程式碼即可。如果提供了高清圖,要根據裝置大小載入不同的圖片,則需要額外的處理。有如下幾種處理方式

  1、採用picture元素,IE瀏覽器、android4.4.4-瀏覽器不相容

<picture>
  <source media="(min-width:50em)" srcset="img/l.jpg">
  <source media="(min-width:30em)" srcset="img/m.jpg">
  <img src="img/s.jpg" alt="#">
</picture>

  2、採用img元素的srcset和sizes屬性,IE瀏覽器、android4.4.4-瀏覽器不相容

<img
  src="img/480.png"
  srcset="img/480.png 480w,img/800.png 800w, img/1600.png 1600w"
  sizes="(min-width:800px) 800px,100vw"
/>

  3、採用js,根據window的resize事件,修改圖片的路徑

function makeImageResponsive(){
    var width = $(window).width();
    var img = $('.content img');
    if(width <=480){
        img.attr('src','img/480.png');
    }else if(width <=800){
        img.attr('src','img/800.png');
    }else{
        img.attr('src','img/1600.png');
    }
}
$(window).on('resize load',makeImageResponsive);

  4、後端配置,前端傳遞給後端當前裝置的一些特徵,後端通過這些特徵決定做怎樣的響應。但目錄兩個後端響應式解決方案Responsive_Images和Adaptive-Images都不再維護

 

優缺點

【優點】

  1、減少工作量,網站、設計、程式碼、內容都只需要一份

  2、節省時間

  3、解決了裝置之間的差異化展示

  4、搜尋優化 

  5、更好的使用者體驗

【缺點】

  1、需要載入更多的樣式和指令碼資源,載入速度受到影響

  2、設計比較難精確定位和控制

  3、老版本瀏覽器相容不好

 

響應模式

  下面介紹四種響應模式

【Column Drop 列下沉】

  手機上每一個大塊單獨佔據一行,隨著螢幕尺寸拉伸會在同一行上形成多個 column 列

【Mostly Fulid 基本流體式】

  基本上跟 Column Drop 一樣,但是有一點點“固定佈局“的特點:當到達一定寬度後,主體內容部分不再變寬,成為固定寬度

【Layout Shifter 變換式】

  變換式,也就是不必遵循原有內容順序,可以根據最佳展示需要來調整大塊順序

【Off Canvas 抽屜式】

  抽屜式,螢幕不夠寬的時候,隱藏,通過按鈕撥出。足夠寬的螢幕上,始終顯示

 

相關文章