1. 程式人生 > >移動端自適應:flexible.js可伸縮佈局使用

移動端自適應:flexible.js可伸縮佈局使用

本文的內容就是介紹淘寶彈性佈局方案lib-flexible實踐,分享給大家供大家參考,具體內容如下

1. 頁面需求

這是要做的頁面效果(不要對設計置評,這不是開發人員決定的):

這是尺寸標註圖(750*1334):

然後美工在750*1334的設計稿之上,按我的要求提供以下素材的切圖:

包括兩個下載按鈕的背景圖片,logo,底部梯形的漸變背景和body部分的mobile 背景圖。注意這些圖片都是在750*1334的設計稿裡面切出來的,所以尺寸都是設計稿裡的原始尺寸,比如android.png:

考慮到retina顯示屏的問題,結合下圖的適配思路:

我認為解決retina屏問題的可行方案是:

1)在devicePixelRatio<=2時,圖片統一使用750設計稿的切圖

2)在devicePixelRatio>=2時,圖片統一使用750*1.5=1125,也就是所謂@3x設計稿的切圖。

我把美工給我的在750*1334的設計稿下的切圖都放在img/@2x 這個資料夾下:

然後讓她幫忙把750的設計稿向量放大1.5倍,再按照同樣的切圖要求為我提供@3x的切圖,並放在了img/@3x 這個資料夾下:

@3x下的圖片理論上尺寸應該等於@2x下的圖片*1.5,不過我的切的沒有這麼完美。

有了前面的需求介紹和素材準備,下一步就是該引入核心的js檔案,編寫css樣式了。

2. 引入flexible.js

這一步其實非常簡單,只要把flexible.js的內容複製出來,在本地新建一個flexible.js的檔案,開啟貼上進去就可以了,我把這個檔案放在了js/lib下面:

接著在html頁面裡面,儘可能早的引入這個js檔案(為了讓適配的效果更快):

注:使用lib-flexible,通常不要寫:

複製程式碼 程式碼如下:<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

交給flexible.js自動處理。

然後在chrome的模擬器裡面,選擇iphone6,應該就能看到html的font-size已經被設定為font-size: 75px了:

3. 編寫CSS
基本要求:

1)除font-size外,其它大小都根據750標註稿的尺寸,轉換成rem單位的值,轉換方法為:標註稿尺寸 / 標註稿基準字型大小;

2)標註稿基準字型大小 = 標註稿寬度 / 10,如標註稿寬為750,標註稿基準字型大小為75;標註稿寬為640,標註稿基準字型大小為64;(所以淘寶這個方案是可以在任意設計稿尺寸下使用的)

3)如果需要設定font-size,可跟據html的data-dpr屬性來處理,類似下面的寫法:

[data-dpr="2"] p {
  font-size: 16px;
}

[data-dpr="3"] p {
  font-size: 24px;
}

以安卓下載按鈕的樣式為例,說明這種用法。android.png的尺寸為:414*80,所以css這麼寫:

.btn {
  width: 414rem/@font-size-base;
  height: 80rem/@font-size-base;
}

由於用了less,事先定義了一個變數來儲存標註稿基準字型大小:

@font-size-base: 75;
所以px2rem的轉換變得非常容易,如上所示。less編譯之後,會將正確的rem值計算出來:

.btn {
 width: 5.52rem;
 height: 1.06666667rem;
}

到此,lib-flexible的基本實踐就結束了,不過還有一個問題,就是retina屏的問題,到現在都還沒提到@3x下圖的那些切圖怎麼辦,其實很簡單,藉助html元素的data-dpr屬性,可以輕鬆實現另一種媒介查詢,以便在devicePixelRatio>=2的時候啟用@3x下的圖片,還是以安卓下載按鈕的樣式為例,寫法是:

.btn-android {
 background-image: url("../img/@2x/[email protected]@version");
 [data-dpr="3"] & {
  background-image: url("../img/@3x/[email protected]@version");
 }
}

這下就OK了,原先還不知道data-dpr有什麼作用,現在看看,作用還是挺大的。

注:

  • 1) 由於使用了grunt構建,所以需要先安裝node ,git,再通過npm安裝grunt 和bower
  • 2)考慮到將來可能要做全屏滾動的效果,所以這頁面一開始就是用fullpage.js來做的,通過bower引入了jquery跟fullpage.js的庫
  • 3) 模組化用到了requirejs
  • 4)執行grunt default完成構建,再執行grunt server啟動靜態伺服器預覽。

以上就是實現淘寶彈性佈局方案lib-flexible實踐的全部過程,希望對大家的學習有所啟發。

原連結:http://www.bkjia.com/Javascript/1084660.html  這是我目前找到關於flexible.js最全的描述

個人建議:把flexible壓縮程式碼作為內聯元素放到頁面裡面提高js執行速度

附加:

<html data-dpr="2" style="font-size: 108px;">

最大REM為108px,同時也就是說最大限制網頁顯示寬頻為1080px,大於1080px的螢幕將會在網頁兩邊出現空白

相關推薦

移動適應flexible.js伸縮佈局使用

本文的內容就是介紹淘寶彈性佈局方案lib-flexible實踐,分享給大家供大家參考,具體內容如下 1. 頁面需求 這是要做的頁面效果(不要對設計置評,這不是開發人員決定的): 這是尺寸標註圖(750*1334): 然後美工在750*1334的設計稿之上

rem適應佈局-移動適應必備:flexible.js

由於移動端特殊性,本文講的是如何使用rem實現自適應,或叫rem響應式佈局,通過使用一個指令碼就可以rem自適應,不用再為各種裝置寬度不同而煩惱如何實現自適應的問題。 rem是相對於根元素,這樣就意味著,我們只需要在根元素確定一個px字號,則可以來算出元素的寬

什麼是flexible.js 移動適應方案

什麼是rem 這個單位代表根元素的 font-size 大小(例如 元素的font-size)。當用在根元素的font-size上面時 ,它代表了它的初始值(譯者注:預設的初始值是html的預設的font-size大小,比如當未在根元素上面設定font-size大小的時候,

flexible js 移動適應框架

                ;(function(win, lib) {    var doc = win.document;    var docEl = doc.documentElement;    var metaEl = doc.querySelector('meta[name="viewpor

移動適應佈局解決方案rem佈局

      之前寫了一篇rem佈局的文章,今天拿出來發現已經過時了。於是再來寫一遍!        2018.10.24更新       首先在html裡面設定一下視口: <meta

實現移動適應js程式碼

 head里加後,實現移動自適應 <script> var sUserAgent = navigator.userAgent.toLowerCase(); var bIsI

使用Flexible實現手淘H5頁面的終端適配rem適應佈局-移動適應必備

曾幾何時為了相容IE低版本瀏覽器而頭痛,以為到Mobile時代可以跟這些麻煩說拜拜。可沒想到到了移動時代,為了處理各終端的適配而亂了手腳。對於混跡各社群的偶,時常發現大家拿手機淘寶的H5頁面做討論——手淘的H5頁面是如何實現多終端的適配? 那麼趁此Amfe阿里無線前端團

淺談移動適應問題——響應式、rem/em、利用Js動態實現移動適應

隨著3G的普及,越來越多的人使用手機上網。移動裝置正超過桌面裝置,成為訪問網際網路的最常見終端。於是,網頁設計師不得不面對一個難題:如何才能在不同大小的裝置上呈現同樣的網頁?本篇文章將講述自適應網頁設計的概念和方法,使網頁開發人員維護同一個網頁程式碼,即可使網站在多種裝置上具

js移動適應動態設定html的fontsize

JS設計移動端頁面時會遇到自適應問題,大多數都知道用rem來設定頁面的比例大小,下面就來說幾種常見的html中的fontsize設定方法: 1.使用flexible.js外掛庫。  淘寶就是利用這個來設定的。重點說下第二種方法; 2.以下是比較簡介的方法: $(

pc移動適應佈局js指令碼(一)

(function(){ //點選一級目錄 $(".first-leve-div span").click(function(e){ e.stopPropagation(); $(this).next("ul").slideT

js 解決移動適應螢幕

很多人說  使用rem單位,就能解決自適應問題。接下來就講講如何實現的。 首先你要知道psd圖的寬度,比如是750px, 然後就是利用 js 去設定下 font-size,如下: <script src="~/Content/js/jquery-1.8.3.min

移動適應

flex var dom out ice cal one content viewport 此代碼加到head標簽裏面,加入後可隨不同機型的移動設備,設置html的fontSize大小,這樣子用rem可作為解決移動端自適應的方案 !function(N,M){funct

webstorm下的sass自動編譯和移動適應實踐

info www .html ted 嘗試 ini 移動 工作文件夾 data http://www.fawwheel.com/shahramLu/p/6477731.html webstorm下的sass自動編譯和移動端自適應實踐 1、安裝Ruby 2、安裝s

eChars移動適應學習筆記

位置 16px out 其中 內部 pri base cal print 有時會出現一個圖表需要同時在PC、移動端上展現的場景。這需要 ECharts 內部組件隨著容器尺寸變化而變化的能力。為了解決這個問題,ECharts 完善了組件的定位設置,並且實現了類似 CSS Me

jsp頁面在 移動 適應,chrome瀏覽器沒問題,可是safari瀏覽器有問題的解決方法

ref orm one 方法 viewport 轉載 min maximum 顯示 在網頁中設置的1px與物理像素中的1px不會相同,所以導致不同在不同手機上顯示結果都不相同,通過以下設置找到了適合當前網頁自適應不同手機、不同瀏覽器的辦法,代碼如下: “ <meta

移動適應rem的設置

需要 spa 移動端 size 開發 .get 字體大小 問題 one 一般所熟知的css樣式大小單位有px,em。 px:精確地描述元素大小,不隨屏幕大小的變化而變化; em:相對於父元素的大小,如果有層層嵌套的話會導致這個值非常大或者非常小。 在寫移動端頁面的時候為了使

移動適應處理頁面布局

dem 全部 但是 希望 去掉 常用 boot div 謝謝 處理頁面大概會有若幹種方案: 第一種就是使用bootstrap; 自己使用自適應單位常用的rem,em ,及別人封裝好的插件flexble.js; 在使用flexble.js;時發現兩個問題,高度沒有很好的展現

移動適應解決方案

size 解決方案 sans key ant htm 自適應 alc 解決 http://dudodo.cc/2017/06/01/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E8%87%AA%E9%80%82%E5%BA%94%E8%A7%A3%E5%86%B

viewport原理和使用和設置移動適應的方法

minimum 禁止 有一個 寬度 maximum client 高度 文字 區域 viewport原理和使用和設置移動端自適應的方法 HTML中: <meta name="viewport" content="width=device-width, initial

如何解決各類尺寸移動適應的問題?

前言; 做移動端的同學都知道,移動端的尺寸參差不齊,那麼如何才能實現各移動端情況下,都能很好地自適應尺寸大小呢? 那就是rem這個單位!我們可以利用js來控制1rem在不同的移動端尺寸情況下對應不同的px(px是絕對單位)。 實現方式: 有興趣的可以搜淘寶的flexible.js前端自適應解決實現方案