/* eslint-disable */
;(function(win, lib) {
var doc = win.document;
var docEl = doc.documentElement;
var metaEl = doc.querySelector('meta[name="viewport"]');
var flexibleEl = doc.querySelector('meta[name="flexible"]');
var dpr = 0;
var scale = 0;
var tid;
var flexible = lib.flexible || (lib.flexible = {});
if (metaEl) {
// console.warn('將根據(jù)已有的meta標(biāo)簽來設(shè)置縮放比例');
var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/);
if (match) {
scale = parseFloat(match[1]);
dpr = parseInt(1 / scale);
}
} else if (flexibleEl) {
var content = flexibleEl.getAttribute('content');
if (content) {
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
if (initialDpr) {
dpr = parseFloat(initialDpr[1]);
scale = parseFloat((1 / dpr).toFixed(2));
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1]);
scale = parseFloat((1 / dpr).toFixed(2));
}
}
}
if (!dpr && !scale) {
var isAndroid = win.navigator.appVersion.match(/android/gi);
var isIPhone = win.navigator.appVersion.match(/iphone/gi);
var devicePixelRatio = win.devicePixelRatio;
if (isIPhone) {
// iOS下溯祸,對于2和3的屏污茵,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3;
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
dpr = 2;
} else {
dpr = 1;
}
} else {
// 其他設(shè)備下疚鲤,仍舊使用1倍的方案
dpr = 1;
}
scale = 1 / dpr;
}
docEl.setAttribute('data-dpr', dpr);
if (!metaEl) {
metaEl = doc.createElement('meta');
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl);
} else {
var wrap = doc.createElement('div');
wrap.appendChild(metaEl);
doc.write(wrap.innerHTML);
}
}
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 768) {
width = 768 * dpr;
}
var rem = width / 7.5;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
win.addEventListener('resize', function() {
clearTimeout(tid);
tid = setTimeout(refreshRem, 300);
}, false);
win.addEventListener('pageshow', function(e) {
if (e.persisted) {
clearTimeout(tid);
tid = setTimeout(refreshRem, 300);
}
}, false);
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px';
} else {
doc.addEventListener('DOMContentLoaded', function(e) {
doc.body.style.fontSize = 12 * dpr + 'px';
}, false);
}
refreshRem();
flexible.dpr = win.dpr = dpr;
flexible.refreshRem = refreshRem;
flexible.rem2px = function(d) {
var val = parseFloat(d) * this.rem;
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px';
}
return val;
}
flexible.px2rem = function(d) {
var val = parseFloat(d) / this.rem;
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem';
}
return val;
}
})(window, window['lib'] || (window['lib'] = {}));
flexible - 移動端適配
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載掂咒,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者才沧。
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饱搏,“玉大人非剃,你說我怎么就攤上這事⊥品校” “怎么了备绽?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長鬓催。 經(jīng)常有香客問我肺素,道長,這世上最難降的妖魔是什么深浮? 我笑而不...
- 正文 為了忘掉前任压怠,我火速辦了婚禮,結(jié)果婚禮上飞苇,老公的妹妹穿的比我還像新娘菌瘫。我一直安慰自己,他們只是感情好布卡,可當(dāng)我...
- 文/花漫 我一把揭開白布雨让。 她就那樣靜靜地躺著,像睡著了一般忿等。 火紅的嫁衣襯著肌膚如雪栖忠。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼古沥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娇跟?” 一聲冷哼從身側(cè)響起岩齿,我...
- 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苞俘,沒想到半個月后盹沈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡吃谣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年乞封,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片基协。...
- 正文 年R本政府宣布杂穷,位于F島的核電站悍缠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耐量。R本人自食惡果不足惜飞蚓,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望廊蜒。 院中可真熱鬧趴拧,春花似錦溅漾、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脑又,卻和暖如春暮胧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背问麸。 一陣腳步聲響...
- 正文 我出身青樓席舍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妄田。 傳聞我的和親對象是個殘疾皇子俺亮,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- postcss-pxtorem配合lib-flexible,非常方便疟呐,vue-cli3.0后脚曾,項(xiàng)目配置被大大精簡了...
- 優(yōu)點(diǎn) 1.不需要自己編寫js計(jì)算,引入lib-flexible2.不需要手動計(jì)算rem值启具,不需要改變px寫法本讥,po...
- 解決vue移動端適配問題,vue-cli3+vant-ui等第三方UI組件引入適配 1. 安裝amfe-flexi...
- 前言 ??相信大多數(shù)移動端前端開發(fā)者都是用過lib-flexible來作為移動端適配的解決方案鲁冯。lib-flexi...
- 今天感恩節(jié)哎拷沸,感謝一直在我身邊的親朋好友。感恩相遇薯演!感恩不離不棄撞芍。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...