如何基于viewport vm適配移動(dòng)端頁(yè)面
前言
作為一個(gè)小前端,經(jīng)常要和H5打交道,這就面臨著不同終端的適配問(wèn)題。
Flexible方案通過(guò)Hack手段來(lái)根據(jù)設(shè)備的dpr值相應(yīng)改變<meta>標(biāo)簽中viewport的值,給我更貼切的體會(huì)就是通過(guò)js腳本根據(jù)設(shè)備的dpr和設(shè)計(jì)圖的寬度來(lái)計(jì)算出html的font-size值,然后就運(yùn)用rem單位開(kāi)發(fā)可以等比例縮放的H5頁(yè)面。
但是!Flexible已經(jīng)完成了他自身的歷史使命,我們可以放下Flexible,擁抱新的變化。
做到適配要解決的問(wèn)題
- 在移動(dòng)端布局,我們需要面對(duì)兩個(gè)最為重要的問(wèn)題:
- 各終端下的適配問(wèn)題
- Retina屏的細(xì)節(jié)處理
不同的終端,我們面對(duì)的屏幕分辨率、DPR、1px、2x圖等一系列的問(wèn)題。那么這個(gè)布局方案也是針對(duì)性的解決這些問(wèn)題,只不過(guò)解決這些問(wèn)題不再是使用Hack手段來(lái)處理,而是直接使用原生的CSS技術(shù)來(lái)處理的。
適配終端
以前的Flexible方案是通過(guò)JavaScript來(lái)模擬vw的特性,那么到今天為止,vw已經(jīng)得到了眾多瀏覽器的支持,也就是說(shuō),可以直接考慮將vw單位運(yùn)用于我們的適配布局中。
vw是基于Viewport視窗的長(zhǎng)度單位,這里的視窗(Viewport)指的就是瀏覽器可視化的區(qū)域,而這個(gè)可視區(qū)域是window.innerWidth/window.innerHeight的大小。用下圖簡(jiǎn)單的來(lái)示意一下:

藍(lán)色區(qū)域就是 window.innerWidth 和 window.innerHeight
在CSS Values and Units Module Level 3中和Viewport相關(guān)的單位有四個(gè),分別為vw、vh、vmin和vmax。
- vw:是Viewport's width的簡(jiǎn)寫(xiě),1vw等于window.innerWidth的1%
- vh:和vw類似,是Viewport's height的簡(jiǎn)寫(xiě),1vh等于window.innerHeihgt的1%
- vmin:vmin的值是當(dāng)前vw和vh中較小的值
- vmax:vmax的值是當(dāng)前vw和vh中較大的值
如果設(shè)計(jì)稿用750px寬度的,100vw = 750px,即1vw = 7.5px。那么我們可以根據(jù)設(shè)計(jì)圖上的px值直接轉(zhuǎn)換成對(duì)應(yīng)的vw值。如果不想自己計(jì)算,我們可以使用PostCSS的插件postcss-px-to-viewport,讓我們可以直接在代碼中寫(xiě)px。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決PhoneGap不支持viewport的幾種方法
- 深入理解移動(dòng)前端開(kāi)發(fā)之viewport
- 詳解jquery插件jquery.viewport.js學(xué)習(xí)使用方法
- 關(guān)于meta viewport中target-densitydpi屬性詳解(推薦)
- 自適應(yīng)布局meta標(biāo)簽中viewport、content、width、initial-scale、minimum-scale、maximum-scale總結(jié)
- 通過(guò)viewport實(shí)現(xiàn)jsp頁(yè)面支持手機(jī)縮放
- 關(guān)于viewport,Ext.panel和Ext.form.panel的關(guān)系
- ExtJs 學(xué)習(xí)筆記 Ext.Panle Ext.TabPanel Ext.Viewport
相關(guān)文章
JavaScript異步調(diào)用定時(shí)方法并停止該方法實(shí)現(xiàn)代碼
JavaScript異步調(diào)用定時(shí)方法并停止該方法實(shí)現(xiàn)代碼 ,需要的朋友可以參考下2012-03-03
Webpack path與publicPath的區(qū)別詳解
本篇文章主要介紹了Webpack path與publicPath的區(qū)別詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
純JavaScript代碼實(shí)現(xiàn)文本比較工具
之前項(xiàng)目需求需要寫(xiě)一個(gè)純js文本比較工具,在此小編把代碼分享在腳本之家平臺(tái)供大家參考2016-02-02
uni-file-picker文件選擇上傳功能實(shí)現(xiàn)代碼
本文介紹了uni-file-picker的基礎(chǔ)使用方法,包括選擇圖片的九宮格樣式、限制選擇的圖片數(shù)量、指定圖片類型及后綴,以及如何自定義上傳時(shí)機(jī),詳細(xì)說(shuō)明了如何通過(guò)設(shè)置不同的屬性來(lái)實(shí)現(xiàn)圖片的選擇和上傳,適用于需要在應(yīng)用中上傳圖片的開(kāi)發(fā)者2024-09-09
JavaScript操作選擇對(duì)象的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JavaScript操作選擇對(duì)象的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05
webpack前端應(yīng)用之基礎(chǔ)打包實(shí)現(xiàn)
本文主要介紹了webpack前端應(yīng)用之基礎(chǔ)打包實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
利用js實(shí)現(xiàn)選項(xiàng)卡的特別效果的實(shí)例
利用js實(shí)現(xiàn)選項(xiàng)卡的特別效果的實(shí)例,需要的朋友可以參考一下2013-03-03
Bootstrap的popover(彈出框)2秒后定時(shí)消失的實(shí)現(xiàn)代碼
Bootstrap Popover(彈出框)是使用定制的 Jquery 插件創(chuàng)建的。它可以用來(lái)顯示任何元素的一些信息。這篇文章主要介紹了Bootstrap的popover(彈出框)2秒后定時(shí)消失功能,需要的朋友參考下2017-02-02

