文章出處
文章列表
移動端web頁面如何適配,現有兩個方案:
1 設置viewport進行縮放
簡單粗暴,使用過程中反應縮放會導致有些頁面元素會糊的情況。天貓的web app的首頁使用這種方案
在頁面中加入viewport.js
var doc = window.document, docEle = doc.documentElement, dpr = Math.ceil(window.devicePixelRatio), vp = document.querySelector('meta[name="viewport"]'), docWidth = docEle.clientWidth, r = docWidth / 375; vp.setAttribute('content', 'width=375,initial-scale=' + r + ',maximum-scale=' + r * dpr + ', minimum-scale=' + r / dpr + ',user-scalable=no');
2 rem能等比例適配所有屏幕
rem是通過根元素進行適配的,網頁中的根元素指的是html。我們通過設置html的字體大小就可以控制rem的大小。
在頁面中加入common.js
var dpr, rem, scale; var fontEl = document.createElement('style'); var metaEl = document.querySelector('meta[name="viewport"]'); var docEl = document.documentElement; dpr = window.devicePixelRatio || 1; rem = docEl.clientWidth / 10; scale = 1 / dpr; // 設置viewport,進行縮放,達到高清效果 //metaEl.setAttribute('content', 'width=' + dpr * rem + ',initial-scale=1,maximum-scale=1, minimum-scale=1,user-scalable=no'); // 設置data-dpr屬性,留作的css hack之用 docEl.setAttribute('data-dpr', dpr); // 動態寫入樣式 docEl.firstElementChild.appendChild(fontEl); fontEl.innerHTML = 'html{font-size:' + rem + 'px;}'; // 給js調用的,某一dpr下rem和px之間的轉換函數 window.rem2px = function(v) { v = parseFloat(v); return v * rem; }; window.px2rem = function(v) { v = parseFloat(v); return v / rem; }; window.dpr = dpr; window.rem = rem;
====================計算相應的rem值=方法============================================
1通過sass,定義函數計算rem
$baseFontSize: 64px !default; $gray: #cccccc !default; // pixels to rems @function pxToRem($px) { @return $px / $baseFontSize * 1rem; } body{ font-size:$baseFontSize; color:lighten($gray,10%); } .test{ font-size:pxToRem(30px); color:darken($gray,10%); }
編譯后的css
body { font-size: 64px; color: #e6e6e6; } .test { font-size: 0.46875rem; color: #b3b3b3; } /*# sourceMappingURL=test.css.map */
2通過工具計算
點擊: px轉rem工具
該工具的用法:
輸入自己頁面的html font size,上傳自己的css代碼,然后下載css,就可以了。
---------------------------參考------------------------------------------
rem單位詳細講解 : webapp變革之rem
學習sass: sass語法
文章列表
全站熱搜