Created
October 23, 2019 11:21
-
-
Save jerrylau91/839bfa4f54c41a2bca1ac682a6b01d5c to your computer and use it in GitHub Desktop.
手机端页面自适应解决方案—rem布局进阶版
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @param {Boolean} [normal = false] - 默认开启页面压缩以使页面高清; | |
* @param {Number} [baseFontSize = 100] - 基础fontSize, 默认100px; | |
* @param {Number} [fontscale = 1] - 有的业务希望能放大一定比例的字体; | |
*/ | |
const win = window; | |
export default win.flex = (normal, baseFontSize, fontscale) => { | |
const _baseFontSize = baseFontSize || 100; | |
const _fontscale = fontscale || 1; | |
const doc = win.document; | |
const ua = navigator.userAgent; | |
const matches = ua.match(/Android[\S\s]+AppleWebkit\/(\d{3})/i); | |
const UCversion = ua.match(/U3\/((\d+|\.){5,})/i); | |
const isUCHd = UCversion && parseInt(UCversion[1].split('.').join(''), 10) >= 80; | |
const isIos = navigator.appVersion.match(/(iphone|ipad|ipod)/gi); | |
let dpr = win.devicePixelRatio || 1; | |
if (!isIos && !(matches && matches[1] > 534) && !isUCHd) { | |
// 如果非iOS, 非Android4.3以上, 非UC内核, 就不执行高清, dpr设为1; | |
dpr = 1; | |
} | |
const scale = normal ? 1 : 1 / dpr; | |
let metaEl = doc.querySelector('meta[name="viewport"]'); | |
if (!metaEl) { | |
metaEl = doc.createElement('meta'); | |
metaEl.setAttribute('name', 'viewport'); | |
doc.head.appendChild(metaEl); | |
} | |
metaEl.setAttribute('content', `width=device-width,user-scalable=no,initial-scale=${scale},maximum-scale=${scale},minimum-scale=${scale}`); | |
doc.documentElement.style.fontSize = normal ? '50px' : `${_baseFontSize / 2 * dpr * _fontscale}px`; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment