如何实现vue项目不同屏幕适配(2024最新)

作者 : admin 本文共1639个字,预计阅读时间需要5分钟 发布时间: 2024-06-10 共2人阅读

文章目录

      • 1.下载插件,修改px单位为rem单位
      • 2.配置vue.config.js(如下图位置所示)
      • 3.屏幕自适应
      • 4.项目实际使用

1.下载插件,修改px单位为rem单位

如何实现vue项目不同屏幕适配(2024最新)插图

 npm i postcss-plugin-px2rem

2.配置vue.config.js(如下图位置所示)

注意在根目录下,如果没有该文件就新建一个
如何实现vue项目不同屏幕适配(2024最新)插图(1)
以下代码供复制

module.exports = {
  css: {
    loaderOptions: {
      postcss: {
        postcssOptions: {
          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文件
如何实现vue项目不同屏幕适配(2024最新)插图(2)
flexible.js文件内拷贝以下代码

(function flexible(window, document) {
    var docEl = document.documentElement
    var dpr = window.devicePixelRatio || 1
   
    // adjust body font size
    function setBodyFontSize() {
      if (document.body) {
        document.body.style.fontSize = (12 * dpr) + 'px'
      }
      else {
        document.addEventListener('DOMContentLoaded', setBodyFontSize)
      }
    }
    setBodyFontSize();
   
    // set 1rem = viewWidth / 10 原版是10等分,这里把屏幕平均划分为24等分 1920
    function setRemUnit() {
      var rem = docEl.clientWidth / 24
      docEl.style.fontSize = rem + 'px'
    }
   
    setRemUnit()
   
    // reset rem unit on page resize
    window.addEventListener('resize', setRemUnit)
    window.addEventListener('pageshow', function (e) {
      if (e.persisted) {
        setRemUnit()
      }
    })
   
    // detect 0.5px supports
    if (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入口文件引入该文件
如何实现vue项目不同屏幕适配(2024最新)插图(3)
3.下载px to rem(cssrem)插件进行适配
如何实现vue项目不同屏幕适配(2024最新)插图(4)
如何实现vue项目不同屏幕适配(2024最新)插图(5)

4.项目实际使用

注意使用单位要使用rem单位
如何实现vue项目不同屏幕适配(2024最新)插图(6)
实际效果:实现适配,进行浏览器页面缩放,div盒子高度跟随变化,实现成功
如何实现vue项目不同屏幕适配(2024最新)插图(7)

本站无任何商业行为
个人在线分享 » 如何实现vue项目不同屏幕适配(2024最新)
E-->