移动端布局方案,简单高效,完美适配各种机型
第一步:使用淘宝的lib/flexible+rem布局
原理:
rem布局:使用rem作为元素大小的单位,rem=fount-size,根据不同的屏幕宽度设置不同的fount-size值,这样元素也会跟着屏幕变大或变小
lib/flexible:
通过js查询屏幕大小,设置viewport标签的同时始终将fount-size设置为屏幕宽度的1/10。
我们也应该将设计稿分成1/10与之对相应,
由此得到1rem=屏幕宽度的1/10=设计稿的1/10
如果设计稿大小为750px,则1rem=75px,
比如在设计稿上量到一个宽度为150的元素,可以通过150/75得到此元素在设备中的宽度为2rem
用法:
去掉html中的viewport标签,vue项目在public/index.html中操作
vue项目中在main.js中引入flexible
import ' lib/flexible/flexible.js '
引入后就实现了动态设置fount-size和viewport标签了,接下来我们只要在项目中以rem为单位写样式就可以了,但是每次都要手动计算rem太麻烦,可以使用插件postcss-px2rem-exclude
第二步:使用postcss-px2rem-exclude将px转换为rem
使用此插件后,它会将px按照我们配置的比例来转换成rem
用法:
安装:cnpm install postcss-px2rem-exclude -S
配置:安装插件后在package.json添加如下代码
"postcss": {
"plugins": {
"autoprefixer": {},
"postcss-px2rem-exclude": {
"remUnit": 75,//你的设计稿的宽度的1/10为多少px此处就填多少,一般设计稿为750px
"exclude": "/node_modules|floder_name/i" //如果你使用了第三放ui库,将它添加到此处,以免冲突
}
}
},[data-dpr="1"] .selector {
font-size: 14px;
}
[data-dpr="2"] .selector {
font-size: 28px;
}
[data-dpr="3"] .selector {
font-size: 42px;
}第三步:在html的head中加入适配ipad的script标签
直接赋值粘贴就行
<script>
/(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent)&&(head=document.getElementsByTagName('head'),viewport=document.createElement('meta'),viewport.name='viewport',viewport.content='target-densitydpi=device-dpi, width=480px, user-scalable=no',head.length>0&&head[head.length-1].appendChild(viewport));
</script>这样下来几乎所有的移动端都能适配了
来自:https://www.cnblogs.com/yuanlichao/p/11564115.html?utm_source=tuicool&utm_medium=referral
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!