方案一:rem+flexible
postcss配置
"postcss": {"plugins": {// 将css文件中的px转换成rem,autoprefixer是加上各种浏览器前缀"postcss-px2rem": {// UI图片的基准值 750px就是75,640px就是64,默认为75 "remUnit": 37.5,"remPrecision": 6, //准换成rem后的小数点精确数位 默认为6 "baseDpr": 2, //基准device pixel ratio值 默认为2 },"autoprefixer": {"overrideBrowserslist": ["Android 4.1","iOS 7.1","Chrome > 31","ff > 31","ie >= 8"]}}},"postcss-pxtorem": {"rootValue": 50, // 根元素字体大小"propList": ["*"]},
适配代码
import 'amfe-flexible/index.js'
const baseSize = 100 // 这个是设计稿中1rem的大小。
function setRem () {// 实际设备页面宽度和设计稿的比值const scale = (document.documentElement.clientWidth || document.body.clientWidth) / 750// 计算实际的rem值并赋予给html的font-sizedocument.documentElement.style.fontSize = (baseSize * scale) + 'px'
}
setRem()
window.addEventListener('resize', () => {setRem()
})
提示 : 当脱离掉node_modules重新npm install项目依赖时还是需要重新修改一遍的,谨记!
// rem适配
// rem适配原理,改变了一个元素在不同设备上占据的css像素的个数
// 优点:没有破坏完美视口
// 缺点:px值到rem值到转换太复杂
(function(){
var styleNode = document.createElement("style");var w = document.documentElement.clientWidth / 16;styleNode.innerHTML = "html{font-size:" + w + "px!important}";document.head.appendChild(styleNode)
})()
方案二:viewport 适配
/* viewport 适配的原理,viewport适配方案中,每一个元素在不同设备上占据的css像素的个数是一样的,
但是css像素和物理像素的比例是不一样的,等比的。
优点:所量即所得
缺点:没有使用完美视口*/
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width"><title>Document</title>
</head>
<body>
</body>
<script type="text/javascirpt"> (function(){var targetW = 640;var scale = document.documentElement.clientWidth/targetW;var meta=document.querySelector("meta[name='viewport'");meta.content = "initial-scale="+scale + ",minimum-scale="+ scale + ",maximum-scale="+scale+",user-scalable=no";})() </script>
</html>
最后
最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。




有需要的小伙伴,可以点击下方卡片领取,无偿分享
本文介绍了两种移动端适配方案:rem+flexible和viewport适配,并提及了postcss配置和适配代码的细节。同时,文章还推荐了一份关于Vue开发的详细技巧文档,包含36个知识点。
1692

被折叠的 条评论
为什么被折叠?



