文章目录
- 1.下载插件,修改px单位为rem单位
- 2.配置vue.config.js(如下图位置所示)
- 3.屏幕自适应
- 4.项目实际使用
1.下载插件,修改px单位为rem单位
npm i postcss-plugin-px2rem
2.配置vue.config.js(如下图位置所示)
注意在根目录下,如果没有该文件就新建一个
以下代码供复制
module.exports = {css: {loaderOptions: {postcss: {plugins: [require('postcss-plugin-px2rem')({rootValue: 16, //换算基数, 默认100 ,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。exclude: /(node_module)/, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)/ 。如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值mediaQuery: false, //(布尔值)允许在媒体查询中转换px。minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0}),]}}},
}
3.屏幕自适应
1.src目录下新建utils文件夹,utils文件夹下新建flexible.js文件
flexible.js文件内拷贝以下代码
(function flexible(window, document) {var docEl = document.documentElementvar dpr = window.devicePixelRatio || 1// adjust body font sizefunction setBodyFontSize() {if (document.body) {document.body.style.fontSize = (12 * dpr) + 'px'}else {document.addEventListener('DOMContentLoaded', setBodyFontSize)}}setBodyFontSize();// set 1rem = viewWidth / 10 原版是10等分,这里把屏幕平均划分为24等分 1920function setRemUnit() {var rem = docEl.clientWidth / 24docEl.style.fontSize = rem + 'px'}setRemUnit()// reset rem unit on page resizewindow.addEventListener('resize', setRemUnit)window.addEventListener('pageshow', function (e) {if (e.persisted) {setRemUnit()}})// detect 0.5px supportsif (dpr >= 2) {var fakeBody = document.createElement('body')var testElement = document.createElement('div')testElement.style.border = '.5px solid transparent'fakeBody.appendChild(testElement)docEl.appendChild(fakeBody)if (testElement.offsetHeight === 1) {docEl.classList.add('hairlines')}docEl.removeChild(fakeBody)}}(window, document))
2.main.js入口文件引入该文件
3.下载px to rem(cssrem)插件进行适配
4.项目实际使用
注意使用单位要使用rem单位
实际效果:实现适配,进行浏览器页面缩放,div盒子高度跟随变化,实现成功