您的位置:首页 > 移动开发

移动端适配方案

2017-08-01 13:12 603 查看
介绍两种移动端适配方案

1. rem为主

设置根节点字体大小,页面元素都使用scss表达式将px转换为rem

// 在scss中

$mainSize:20px;
html{font-size:$mainSize;}
@function f($px){
@return $px/$mainSize/2*1rem;
}


在页面进行缩放时更新根节点字体大小(设计稿640)

$(window).ready(function(){
$('html').css({'font-size': $(window).width() / 320 *20});
});
$(window).resize(function(){
$('html').css({'font-size': $(window).width() / 320 *20});
});


2. 通过js计算缩放比例控制适配(transform: scale(scale);),页面上最外层元素加上类名adapt

var adapt= {
styleRule: {
add: function(a, b) {
var c = document.styleSheets[document.styleSheets.length - 1];
c.cssRules ? c.insertRule(a + "{" + b + "}", c.cssRules.length) : c.addRule(a, b)
},
remove: function(a) {
for (var b = 0; b < document.styleSheets.length; b++) {
var c = document.styleSheets[b];
c.cssRules ? function() {
for (var b = 0; b < c.cssRules.length; b++) c.cssRules[b].selectorText == a && c.deleteRule(b)
}() : c.removeRule(a)
}
}
},
reset: function() {
adapt.styleRule.remove(".adapt")
},
render: function(a) {
function b() {
adapt.scale = e / 320;
adapt.styleRule.add(c, d.replace("{scale}", adapt.scale));
}
var c, d = "-webkit-transform:scale({scale});-webkit-transform-origin:0px 0px 0px;margin:0px;width:320px;";
document.querySelectorAll(".adapt")[0] ? (c = ".adapt", d += "overflow:hidden;") : (console.warn(".adapt is undefined, open the default settings"), c = "body");
var e = window.innerWidth;
document.body.clientWidth <= window.innerWidth && (e = document.body.clientWidth),
a ? setTimeout(function() {
b()
}, 110) : b();
},
init: function() {
var a = "onorientationchange" in window ? "orientationchange": "resize";
window.addEventListener(a, function() {
adapt.render()
});
}
};
adapt.init();
adapt.render();


3. 自执行方法

(function(win,doc){
change();
function change(){
doc.documentElement.style.fontSize = doc.documentElement.clientWidth *20/375+'px';
}
win.addEventListener('resize',change,false);
win.addEventListener('orientationchange',change,false);
})(window,document);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: