详解Vue-cli3.X使用px2rem遇到的问题

yizhihongxing

详解Vue-cli3.X使用px2rem遇到的问题

什么是vue-cli3.X

Vue CLI 是一个基于Vue.js进行快速开发的完整系统。它包括一个响应式的开发服务器、可定制的webpack配置、常规的Vue项目构建任务和集成了最佳实践的生产环境构建等。

何为px2rem

px2rem 是一种将px值转化为rem值的工具。通过将框架内各个元素的单位从px转化为rem,可以让页面按比例缩放,适应不同尺寸的屏幕。

问题描述

在使用 vue-cli3.X 进行移动端开发时,我们常常会使用 px2rem 将页面中的单位替换为 rem,以便页面自适应。但是,在使用 px2rem 时,可能会遇到以下两个问题:

  • 问题一:将 px 转为 rem 时,会有一些误差。比如应该是 1rem,但实际上转换后可能变成了 0.999rem 等。

  • 问题二:在使用 vuex 进行状态管理时,如果将各个元素的单位从 px 转换成 rem,可能会影响到 vuex 中的数据显示。因为vuex中的数据是以px为单位,将单位转换成rem后会导致数据显示错误。

解决方案

对于问题一,我们可以使用 postcss-px2rem-exclude 插件进行精确转换。

具体步骤如下:

  1. 安装插件
npm install postcss-px2rem-exclude --save-dev
  1. 在 postcss.config.js 中配置插件
module.exports = {
  plugins: {
    autoprefixer: {},
    'postcss-px2rem-exclude': {
      remUnit: 75,  // 根据设计稿调整
      exclude: /node_modules|folder_name/i    //指定需要忽略的文件夹
    }
  }
}
  1. 在需要转换的样式文件中引入以下语句
/* 在需要转换的 css 文件中 */
@import '~postcss-px2rem-exclude/lib/plugin.js';
html {
  font-size: 14px;    // 调整基准字体大小
}

对于问题二,我们需要在 vuex 中将 px 转换成 rem 单位。

具体步骤如下:

  1. 在 store 中添加如下代码
const actions = {
  changeFontSize({commit, state}, payload) {
    let value = payload.value / (750 / (state.windowWidth / 100)) + 'rem'
    // 750为设计稿宽度,100为换算基准
    commit('SET_FONT_SIZE', { value });
  }
};
  1. 在对应的组件中使用
import { mapActions } from 'vuex';
export default {
  methods: {
    ...mapActions(['changeFontSize']),
    handleChangeFontSize(value) {
      this.changeFontSize({ value });
    }
  }
};

示例说明

示例一:假设设计稿中某个图片的尺寸是 200px * 200px,在使用 px2rem 进行转换时,可能会发现实际尺寸有所偏差,比如实际变成了 199px * 199px。

此时,可通过使用 postcss-px2rem-exclude 插件进行精确转换,将像素转换为元单位,以避免误差。

示例二:在使用 vuex 进行状态管理时,我们可能会将某个元素的单位从 px 转换成 rem,以适应不同的设备。但是,如果直接将 vuex 中的数据也转换成 rem,可能会导致数据显示错误。

解决方案是,在 vuex 中将 px 转换成 rem 单位,以便数据显示正确。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Vue-cli3.X使用px2rem遇到的问题 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css实现三栏布局的几种方法及优缺点

    下面是详细讲解“css实现三栏布局的几种方法及优缺点”的完整攻略。 一、三栏布局 三栏布局指的是一个页面中分别拥有左侧栏、中间栏和右侧栏,其中中间栏宽度固定,左右两栏宽度自适应,三栏均处于同一行。 二、实现方式 1. 使用浮动 使用浮动可以很方便地实现三栏布局,主要是通过给左右两栏设置宽度和浮动属性,然后设置中间栏的宽度和与左右两栏的距离即可。 <di…

    css 2023年6月10日
    00
  • css实现“加号”效果的实例代码

    我来为您讲解一下使用CSS实现“加号”效果的攻略。 一、通过动态伪类实现 HTML结构: <div class="box"> <div class="plus"></div> </div> CSS样式: .box { width: 50px; height: 50px; …

    css 2023年6月10日
    00
  • jquery列表拖动排列(由项目提取相当好用)

    下面我将详细讲解“jquery列表拖动排列(由项目提取相当好用)”的完整攻略。 1. 前言 该攻略是基于jQuery实现的列表拖动排序,可以方便地实现用鼠标拖拽方式调整顺序。 2. 实现步骤 2.1 引入jQuery库文件 首先需要引入jQuery库文件,建议使用CDN方式引入,以提高页面加载速度。 <script src="https://…

    css 2023年6月10日
    00
  • Nginx服务器的location指令匹配规则详解

    接下来我将为您详细讲解“Nginx服务器的location指令匹配规则详解”的完整攻略。 Nginx服务器的location指令匹配规则详解 前言 Nginx是一款高性能的Web服务器,也是一个非常好的反向代理服务器。而在Nginx中,location指令是用来匹配请求URL的一种重要方法。本文将详细讲解location指令的匹配规则,帮助您更好地掌握Ngi…

    css 2023年6月9日
    00
  • css常用样式font设置字体的多种变换(实例详解)

    关于“css常用样式font设置字体的多种变换(实例详解)”,我为您提供以下完整攻略: 一、字体大小 1. 使用font-size属性 可以使用font-size属性设置字体大小,例如: p { font-size: 16px; } 表示设置p标签中字体大小为16像素。 2. 使用em或rem作为单位 也可以使用em或rem作为单位,相对于父元素或根元素的字…

    css 2023年6月9日
    00
  • jQuery+CSS3实现四种应用广泛的导航条制作实例详解

    下面给出“jQuery+CSS3实现四种应用广泛的导航条制作实例详解”的完整攻略。 1.前言 导航条是Web页面中非常重要的组成部分,良好的导航条可以让用户更加方便快捷地进行网站浏览。以下攻略介绍了使用jQuery和CSS3制作四种常见的导航条的方法,包括菜单栏、列表导航、圆形导航和响应式导航。 2.实现方法 2.1菜单栏 菜单栏是Web页面中最常见的导航条…

    css 2023年6月10日
    00
  • css3加js做一个简单的3D行星运转效果实例代码

    下面是一个简单的 3D 行星运转效果的实例代码,使用了 CSS3 和 JavaScript。 HTML 结构 <div class="container"> <div class="planet"></div> </div> 上述代码中,我们创建了一个容器 div 元素,…

    css 2023年5月18日
    00
  • 利用JS生成博文目录及CSS定制博客

    下面是“利用JS生成博文目录及CSS定制博客”的完整攻略: 1. 生成博文目录 1.1 实现原理 利用JS生成博文目录的原理是通过JS获取博客文章的标题、对应的dom节点和锚点,然后利用DOM操作动态生成目录并插入到博客页面的特定位置。 1.2 示例代码 以下是一个简单的JS生成目录的示例代码,实现了获取所有标题,创建目录结构并添加到页面对应位置的功能。 /…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部