如何基于viewport vm適配移動端頁面
前言
作為一個小前端,經(jīng)常要和H5打交道,這就面臨著不同終端的適配問題。
Flexible方案通過Hack手段來根據(jù)設(shè)備的dpr值相應(yīng)改變<meta>標簽中viewport的值,給我更貼切的體會就是通過js腳本根據(jù)設(shè)備的dpr和設(shè)計圖的寬度來計算出html的font-size值,然后就運用rem單位開發(fā)可以等比例縮放的H5頁面。
但是!Flexible已經(jīng)完成了他自身的歷史使命,我們可以放下Flexible,擁抱新的變化。
做到適配要解決的問題
- 在移動端布局,我們需要面對兩個最為重要的問題:
- 各終端下的適配問題
- Retina屏的細節(jié)處理
不同的終端,我們面對的屏幕分辨率、DPR、1px、2x圖等一系列的問題。那么這個布局方案也是針對性的解決這些問題,只不過解決這些問題不再是使用Hack手段來處理,而是直接使用原生的CSS技術(shù)來處理的。
適配終端
以前的Flexible方案是通過JavaScript來模擬vw的特性,那么到今天為止,vw已經(jīng)得到了眾多瀏覽器的支持,也就是說,可以直接考慮將vw單位運用于我們的適配布局中。
vw是基于Viewport視窗的長度單位,這里的視窗(Viewport)指的就是瀏覽器可視化的區(qū)域,而這個可視區(qū)域是window.innerWidth/window.innerHeight的大小。用下圖簡單的來示意一下:
藍色區(qū)域就是 window.innerWidth 和 window.innerHeight
在CSS Values and Units Module Level 3中和Viewport相關(guān)的單位有四個,分別為vw、vh、vmin和vmax。
- vw:是Viewport's width的簡寫,1vw等于window.innerWidth的1%
- vh:和vw類似,是Viewport's height的簡寫,1vh等于window.innerHeihgt的1%
- vmin:vmin的值是當前vw和vh中較小的值
- vmax:vmax的值是當前vw和vh中較大的值
如果設(shè)計稿用750px寬度的,100vw = 750px,即1vw = 7.5px。那么我們可以根據(jù)設(shè)計圖上的px值直接轉(zhuǎn)換成對應(yīng)的vw值。如果不想自己計算,我們可以使用PostCSS的插件postcss-px-to-viewport,讓我們可以直接在代碼中寫px。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決PhoneGap不支持viewport的幾種方法
- 深入理解移動前端開發(fā)之viewport
- 詳解jquery插件jquery.viewport.js學(xué)習(xí)使用方法
- 關(guān)于meta viewport中target-densitydpi屬性詳解(推薦)
- 自適應(yīng)布局meta標簽中viewport、content、width、initial-scale、minimum-scale、maximum-scale總結(jié)
- 通過viewport實現(xiàn)jsp頁面支持手機縮放
- 關(guān)于viewport,Ext.panel和Ext.form.panel的關(guān)系
- ExtJs 學(xué)習(xí)筆記 Ext.Panle Ext.TabPanel Ext.Viewport
相關(guān)文章
javascript循環(huán)變量注冊dom事件 之強大的閉包
是在循環(huán)過程過this被改變,注冊過的事件也被隨之改變,找到了一種解決方法2010-09-09詳解Javascript如何通過async/await優(yōu)雅地使用FileReader
這篇文章主要為大家詳細介紹了Javascript和Typescript如何通過async/await優(yōu)雅地使用FileReader,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04node.js+express+mySQL+ejs+bootstrop實現(xiàn)網(wǎng)站登錄注冊功能
這篇文章主要介紹了node.js+express+mySQL+ejs+bootstrop實現(xiàn)網(wǎng)站登錄注冊功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-01-01layuimini框架實現(xiàn)點擊菜單欄回到起始頁的解決方案
這篇文章主要介紹了layuimini框架實現(xiàn)點擊菜單欄回到起始頁的解決方案,本文通過圖文示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06js實現(xiàn)鼠標經(jīng)過時圖片滾動停止的方法
這篇文章主要介紹了js實現(xiàn)鼠標經(jīng)過時圖片滾動停止的方法,可實現(xiàn)js滾動特效中的鼠標懸停停止圖片滾動的功能,非常具有實用價值,需要的朋友可以參考下2015-02-02