vue 实现 rem 布局或vw 布局的方法
一、实现rem布局
移动端
方法一、在index.html或者main.js中添加以下代码:
constsetHtmlFontSize=()=>{ letdeviceWidth= document.documentElement.clientWidth||document.body.clientWidth if(deviceWidth>=750){ deviceWidth=750 } if(deviceWidth<=320){ deviceWidth=320 } document.documentElement.style.fontSize=`${deviceWidth/7.5}px` } window.onresize=setHtmlFontSize setHtmlFontSize()
之后,在写css时,只要将px单位替换成rem,这里设置的比例是100px=1rem,例如,宽度为100px时,可以直接写成1rem。
方法二、cli3使用lib-flexible和将px自动转换为rem插件
1、安装插件
npminstalllib-flexible--save npminstallpx2rem-loader--save-dev
或选择
npminstallpostcss-plugin-px2rem--save-dev(推荐)
或选择
npminstallpostcss-px2rem--save-dev
2、配置插件
在入口文件main.js中引入lib-flexible
import'lib-flexible/flexible'
3、三种插件的cli3配置:
在vue.config.js中
//px2rem-loader配置 module.exports={ chainWebpack:config=>{ config.module .rule('css') .test(/\.css$/) .oneOf('vue') .resourceQuery(/\?vue/) .use('px2rem') .loader('px2rem-loader') .options({ remUnit:75 }) } } //postcss-plugin-px2rem module.exports={ css:{ loaderOptions:{ postcss:{ plugins:[ require('postcss-plugin-px2rem')({ rootValue:75,//换算基数,默认100,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。 //unitPrecision:5,//允许REM单位增长到的十进制数字。 //propWhiteList:[],//默认值是一个空数组,这意味着禁用白名单并启用所有属性。 //propBlackList:[],//黑名单 exclude:/(node_module)/,//默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)\/如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值 //selectorBlackList:[],//要忽略并保留为px的选择器 //ignoreIdentifier:false,//(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。 //replace:true,//(布尔值)替换包含REM的规则,而不是添加回退。 mediaQuery:false,//(布尔值)允许在媒体查询中转换px。 minPixelValue:3//设置要替换的最小像素值(3px会被转rem)。默认0 }) ] } } } } //postcss-px2rem配置 module.exports={ css:{ loaderOptions:{ postcss:{ plugins:[ require('postcss-px2rem')({ remUnit:37.5//设计图除10之后的一半,兼容第三方库px转成rem样式变小的情况 }) ] } } } }
二、cli3实现vw布局
vw是基于Viewport视窗的长度单位
vw:是Viewport'swidth的简写,1vw等于window.innerWidth的1%
vh:和vw类似,是Viewport'sheight的简写,1vh等于window.innerHeihgt的1%
vmin:vmin的值是当前vw和vh中较小的值
vmax:vmax的值是当前vw和vh中较大的值
1、安装插件(可以直接转换px为vw)
npmipostcss-px-to-viewport-D
2、在vue.config.js中
module.exports={ css:{ loaderOptions:{ postcss:{ plugins:[ require('postcss-px-to-viewport')({ viewportWidth:750,//视口宽度,这里设置为跟设计稿宽度一致; viewportHeight:1334,//视口高度,随便设置一个就可以; unitPrecision:3,//转换后值的精度,3表示保留3位小数; viewportUnit:'vw',//转换成什么视口单位,这里当然是vw; selectorBlackList:['.ignore','.hairlines'],//是一个选择符数组,对应声明中的像素单位不会转换; minPixelValue:1,//最小像素值,大于等于这个值才会转换; mediaQuery:false//是否转换媒体查询中的像素。 }) ] } } } }
总结
以上所述是小编给大家介绍的vue实现rem布局或vw布局的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。