原理:通過設定initial-scale
, 將所有裝置布局視口的寬度調整為設計圖的寬度.
rem:css的長度單位, 根元素字型大小的倍數,只有根元素字型大小有關; html 中的根元素即 html 元素。//獲取meta節點
var metanode = document.queryselector('meta[name=viewport]');
//定義設計稿寬度為375
var designwidth = 375;
//計算當前螢幕的寬度與設計稿比例
var scale = document.documentelement.clientwidth/designwidth;
//通過設定meta元素中content的initial-scale值達到移動端適配
meta.content="initial-scale="+scale+",minimum-scale="+scale+",maximum-scale="+scale+",user-scalable=no";
大部分瀏覽器的預設字型大小都是16px,所以1rem = 16px;
rem適配原理:
//對螢幕大小劃分了html不同的font-size
@media screen and (min-width: 320px) }
@media screen and (min-width: 360px) }
@media screen and (min-width: 375px) }
@media screen and (min-width: 400px) }
@media screen and (min-width: 414px) }
@media screen and (min-width: 440px) }
@media screen and (min-width: 480px) }
@media screen and (min-width: 520px) }
@media screen and (min-width: 560px) }
@media screen and (min-width: 600px) }
@media screen and (min-width: 640px) }
@media screen and (min-width: 680px) }
@media screen and (min-width: 720px) }
@media screen and (min-width: 760px) }
@media screen and (min-width: 800px) }
@media screen and (min-width: 960px) }
這裡我們計算當前螢幕的寬度與設計稿比後用比例scale乘上100,是因為rem都是基於font-size值設定的,100便於計算,值可以為任意數,比如10,但是chrome中最小為12,所以這裡選擇用100;var designwidth = 375; // 設計稿寬度
var rempx = 100; // 在螢幕寬度375px,的時候,設定根元素字型大小 100px
var scale = window.innerwidth / designwidth; //計算當前螢幕的寬度與設計稿比例
// 根據螢幕寬度 動態計算根元素的 字型大小
document.documentelement.style.fontsize = scale*rempx + 'px';
從而達到rem適配。
js獲取當前螢幕的寬度,將螢幕寬度的16分之一設定給html的font-size// 計算螢幕寬度
var screen = document.documentelement.clientwidth;
// 計算字型大小,取螢幕寬度的16分之一
var size = screen / 16;
// 設定根元素字型大小
document.documentelement.style.fontsize = size + 'px';
如果此時設計稿中的16可以為任意值,你設定多少,js中螢幕寬度就除於多少再賦值給html的font-size。// 此時設計稿的寬度為375,定義乙個less變數等於16分之一的設計稿寬度
@rem: 375/16rem;
若設計稿中的某元素設定寬高為200px
.box
此時可以替換為:
.box
分析:
設計稿中的元素尺寸都是基於設計稿的寬度而定,如上述,200px的寬度是基於設計稿375px而定的,但當js中獲取的寬度發生改變時,需要解決適配問題。假設js中獲取的此時螢幕寬度為750px,那麼此時html的font-size值為750/16 px;
此時計算box的width為400px
注:1rem = 1 html的font-size
此方法不需要進行單位數值的計算,只需要定義乙個less變數,再查詢替換將單位px換成 /@rem 即可。
這種方法跟第四種雷同,但不需要再在less中定義變數,只需要進行js獲取配合查詢替換px即可。
// 計算螢幕寬度
var screen = document.documentelement.clientwidth;
// 設定根元素字型大小
document.documentelement.style.fontsize = screen + 'px';
.box
.box
分析:
這種方法是js動態獲取螢幕寬度,直接將html的font-size設定為螢幕的寬度,再在less中進行換算。
若此時js獲取的螢幕寬度為750px,html的font-size值設定為750px後,此時計算box的width為400px
200/375rem = 200/375*750 px = 400px
談談移動端螢幕適配的幾種方法
響應式布局 簡而言之,就是頁面元素的位置隨著螢幕尺寸的變化而變化,通常會用百分比來定位,而在設計上需要預留一些可被 壓縮 的空間。如上圖,其實就相當於頁面被壓矮了。cover布局 就跟background size的cover屬性一樣,保持頁面的寬高比,取寬或高之中的較小者佔滿螢幕,超出的內容會被隱...
移動端適配的方法
1.利用meta的viewport做適配 在裡面加乙個script的處理 然後css的寫法就是按照正常量到的設計稿尺寸就可以了,單位為px 2.利用 手淘 rem less 做適配 less編譯成css,頁面只需要引入css就可以了,引入檔案 1 flexible.js 2 less編譯後的css檔...
移動端幾種做前端適配的方法講解
目前我所知道是有幾種方法來做適配 1.使用rem單位來做網頁適配,這個是我比較推薦的一種,效果很好,瀏覽器的相容性也不錯 只要一行 就能適配多個解析度終端 function doc,win docel.style.fontsize 100 clientwidth 750 px recalc if d...