vue+element PC系统自适应

这里需要借助到几个插件

1.lib-flexible

npm install lib-flexible --save

安装完后再main.js文件中直接引入即可

import "lib-flexible"

注意,这个插件安装后需要在依赖中改变屏幕宽度,因为这个插件是为移动端设计的,最大宽度是540px,需要在/node_modules/lib-flexible/flexible.js这个路径下,将下图红框处修改成width即可(源代码这个地方是540)
在这里插入图片描述

2.px2rem-loader 或者 postcss-pxtorem,这两个插件是把px单位根据设计搞转换成rem的,安装其一即可

npm install px2rem-loader 

npm install postcss-pxtorem 

vuecli3及以上版本的,使用px2rem-loader 插件的话,在vue.config.js文件里配置一下代码

 module.exports = {
 chainWebpack: (config) => {
    config.module
      .rule("less")
      .test(/\.less$/)
      .oneOf("vue")
      .use("px2rem-loader")
      .loader("px2rem-loader")
      .before("postcss-loader") // this makes it work.
      .options({
        remUnit: 144,//此处是设计稿缩小10倍的尺寸,可根据自己设计稿情况调整
        remPrecision: 2,//转换成rem单位后保留的小数位数
      })
      .end();
      }
      }

使用postcss-pxtorem插件的,在src同级目录下创建.postcssrc.js文件,在此文件内配置如下代码

module.exports = ({ file }) => {
  let isElement = file && file.dirname && file.dirname.indexOf("el") > -1;
  if (isElement) {
    // 判断条件  如有多种情况,进行不同判断
    rootValue = 144;//可以根据所安装的UI框架尺寸来调整
  } else {
    rootValue = 144;//此处是设计稿缩小10倍的尺寸
  }
  return {
    plugins: {
      autoprefixer: {
        overrideBrowserslist: [
          "Android 4.1",
          "iOS 7.1",
          "Chrome > 31",
          "ff > 31",
          "ie >= 8",
        ],
      },
      "postcss-pxtorem": {
        rootValue: rootValue,
        unitPrecision: 2, // rem的小数点后位数
        propList: ["*"],
      },
    },
  };
};

px2rem-loader暂时没有找到同时转换UI框架里px的方法,postcss-pxtorem经配置后对UI框架里的px单位也可以转换成rem,但两个插件都不能把行内样式的px单位转换成rem,所以还需要下面的第三个插件

3.style-rem-loader 这个插件会把行内的px单位转换成rem

npm install style-rem-loader --save

vuecli2 的配置

{
    test: /\.(vue|jsx?)$/,
    loader: 'style-rem-loader',
    options: {
        unitToConvert: "px",
        viewportWidth: 1440,//设计稿1:1的尺寸
        unitPrecision: 2,//rem的小数位数
        viewportUnit: "rem",
        fontViewportUnit: "rem",
        minPixelValue: 1,
    }
}

vuecli3的安装后在vue.config.js文件里如下配置

module.exports = {
  chainWebpack: (config) => {
    config.module
      .rule("vue")
      .test(/\.vue$/)
      .use("style-rem-loader")
      .loader("style-rem-loader")
      .options({
        unitToConvert: "px",
        viewportWidth: 1440,//设计稿1:1的尺寸
        unitPrecision: 2,//rem的小数位数
        viewportUnit: "rem",
        fontViewportUnit: "rem",
        minPixelValue: 1,
      })
      .end();
  },
};

若需要UI框架也跟着把px单位转换成rem则需要在 .postcssrc.js文件里配置一下,没有这个文件可以新建一个

module.exports = ({ file }) => {
    let isElement = file && file.dirname && file.dirname.indexOf("el") > -1;//判断出需要转换单位的UI框架
    if (isElement) {
      // 判断条件  如有多种情况,进行不同判断
      rootValue = 144;//设计稿尺寸
    } else {
      rootValue = 144;
    }
    return {
      plugins: {
        autoprefixer: {
          overrideBrowserslist: [
            "Android 4.1",
            "iOS 7.1",
            "Chrome > 31",
            "ff > 31",
            "ie >= 8",
          ],
        },
        "postcss-pxtorem": {
          rootValue: rootValue,
          unitPrecision: 2, // rem的小数点后位数
          propList: ["*"],
        },
      },
    };
  };

至此,重新启动项目即可生效

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue2项目中,实现PC自适应屏幕可以考虑以下方法: 1. 使用CSS媒体查询来适配不同屏幕分辨率。根据不同的屏幕宽度,设置不同的样式,以确保页面在不同设备上都能正常显示。可以在CSS中使用@media规则,根据屏幕宽度设置不同的样式。例如,可以设置一些容器的宽度为百分比,以便根据屏幕宽度自动调整大小。 2. 使用流式布局和弹性盒子布局。这些布局方式可以根据屏幕大小自动调整内容的布局和大小,以适应不同的屏幕分辨率。可以使用Vue的flexbox布局或者其他CSS框架(如Bootstrap)来实现流式布局和弹性盒子布局。 3. 使用响应式设计。Vue2中可以使用Vue的响应式特性,根据屏幕的尺寸和方向来动态改变页面的布局和样式。可以使用Vue的计算属性和watch来监听屏幕尺寸的变化,并在变化时更新页面布局和样式。 4. 使用第三方插件或库。Vue2有许多第三方插件或库可以帮助实现PC自适应屏幕。例如,可以使用element-ui等UI库,它们提供了很多响应式的组件,可以根据屏幕尺寸自动调整布局和样式。 综上所述,可以通过使用CSS媒体查询、流式布局和弹性盒子布局、响应式设计以及第三方插件或库来实现Vue2项目的PC自适应屏幕。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue2项目PC自适应屏幕](https://blog.csdn.net/qq_58717344/article/details/129750325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值