vue中px转换成rem

vue中px转换rem

1.npm i lib-flexible px2rem-loader --save
2.main.js导入 import ‘lib-flexible/flexible’
3.在build文件中找到util.js,将px2rem-loader添加到cssLoaders中,
如:

/*const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }
  const postcssLoader = {
    loader: 'postcss-loader',
    options: {
      sourceMap: options.sourceMap
    }
  } */
  将上边代码块注释换成下边这样的代码:
  const cssLoader = {
	    loader: 'css-loader',
	    options: {
	      minimize: process.env.NODE_ENV === 'production',
	      sourceMap: options.sourceMap
	    }
	  }
	  const px2remLoader = {
	    loader: 'px2rem-loader',
	    options: {
	      remUnit: 32   //根据psd的尺寸  /10 得来 
	      // remUnit一般为32,这样可以适应任何宽度的手机屏幕
	    }
	  }

同时,在generateLoaders方法中添加px2remLoader,代码如下:

function generateLoaders (loader, loaderOptions) {
    const loaders = [cssLoader,px2remLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
}

配置完成之后,重启项目,就可以在vue脚手架中正常使用px来编写代码,这个会自动将px转换成rem。

Vue CLI 5 和 Vue 3 项目中,可以使用 `postcss-pxtorem` 插件将 px 单位转换为 rem 单位。以下是具体实现步骤: ### 步骤 1: 安装依赖 首先需要安装 `postcss-pxtorem` 和 `postcss`(如果项目中尚未安装): ```bash npm install postcss-pxtorem postcss --save-dev ``` ### 步骤 2: 配置 PostCSS 在 Vue CLI 项目中,PostCSS 的配置可以通过 `vue.config.js` 文件完成。 #### 创建或修改 `vue.config.js` 在项目的根目录下创建或编辑 `vue.config.js` 文件,添加以下内容: ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 16, // 设计稿的根字体大小,通常为16px propList: ['*'], // 需要转换的属性,'*'表示所有 exclude: /node_modules/, // 排除转换的文件路径 selectorBlackList: [], // 忽略的选择器 minPixelValue: 2 // 设置最小的转换数值,小于等于此值的不转换 }) ] } } } } ``` ### 步骤 3: 验证配置 确保你的项目中已经设置了根字体大小(通常在全局样式文件中设置),例如: ```css /* 在 src/assets/styles/global.css 或其他全局样式文件中 */ html { font-size: 16px; /* 根字体大小 */ } ``` 然后重新构建项目: ```bash npm run serve ``` 构建完成后,项目中的 px 单位会被自动转换为 rem 单位。 --- ### 解释代码 1. **`rootValue: 16`** 表示设计稿的根字体大小为 16px,1rem 等于 16px。你可以根据实际需求调整该值。 2. **`propList: ['*']`** 表示将所有 CSS 属性中的 px 转换为 rem。如果你只想转换某些特定属性(如 `font-size` 或 `margin`),可以指定为 `['font-size', 'margin']`。 3. **`exclude: /node_modules/`** 表示排除 `node_modules` 目录下的文件,避免第三方库的样式被误转换。 4. **`minPixelValue: 2`** 表示小于等于 2px 的值不会被转换为 rem,以避免生成过小的浮点数。 --- ### 示例效果 假设你有如下样式: ```css .example { font-size: 16px; margin: 8px; } ``` 经过 `postcss-pxtorem` 转换后会变成: ```css .example { font-size: 1rem; margin: 0.5rem; } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值