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

详解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日

相关文章

  • Nginx中location匹配以及rewrite重写跳转详解

    首先我们来简单介绍一下Nginx中的location匹配和rewrite重写跳转。 1. Nginx中的location匹配 在Nginx中,location匹配规则是由location指令和正则表达式控制的。它能够实现URL的精细控制,包括对不同URL请求的处理方式、静态文件缓存、反向代理、fastcgi服务等等。 1.1 精确匹配 精确匹配指的是只匹配U…

    css 2023年6月9日
    00
  • css基于媒体查询和 rem 的响应式布局实践

    下面为你详细讲解“CSS基于媒体查询和rem的响应式布局实践”的完整攻略。 一、什么是媒体查询 媒体查询是CSS3比较常用的一个新特性,它可以让CSS样式对不同的设备进行特定的适配。 媒体查询可以根据设备的参数来匹配不同的CSS样式,常见的参数包括屏幕大小、分辨率、设备方向等,例如下面的代码就是一个CSS的媒体查询: @media screen and (m…

    css 2023年6月9日
    00
  • Flask 文件上传方法(详解版)

    Flask 是一个轻量级的 Web 框架,提供了简洁的 API 和易于使用的工具,使得开发 Web 应用程序变得更加简单。 在本文中,我们将深入探讨 Flask 中的文件上传功能。 首先,在 Flask 中使用文件上传,需要用到 werkzeug 模块的 FileStorage 类。FileStorage 可以将上传的文件转换为特定类型的表示,以便在应用程序…

    Flask 2023年3月13日
    00
  • 纯CSS实现菜单、导航栏的3D翻转动画效果

    下面是详细讲解“纯CSS实现菜单、导航栏的3D翻转动画效果”的完整攻略。 1. 准备工作 在开始之前,需要准备一些基本的前端开发知识,包括HTML和CSS。此外,还需要有一定的CSS3动画知识。 2. 实现原理 要实现菜单、导航栏的3D翻转动画效果,需要使用CSS3中的3D变换,通过对transform属性的设置,实现元素在三维空间中的旋转、平移、缩放等效果…

    css 2023年6月10日
    00
  • 原生JS实现旋转木马式图片轮播插件

    下面是“原生JS实现旋转木马式图片轮播插件”的完整攻略: 概述 通过原生JS实现旋转木马式图片轮播插件,需要掌握以下知识点: 利用 JavaScript 操作 DOM 元素。 利用 CSS 完成动画效果。 利用 JavaScript 实现定时器。 利用事件处理函数实现用户交互。 实现步骤 下面逐一介绍实现旋转木马式图片轮播插件的步骤: 创建 HTML 结构。…

    css 2023年6月10日
    00
  • 如何为CheckBoxList和RadioButtonList添加滚动条

    为CheckBoxList和RadioButtonList添加滚动条是一个常见需求,可以通过CSS样式和JavaScript代码来完成。下面是实现该需求的详细步骤: 第一步:为控件添加CSS样式 首先,为要添加滚动条的控件添加CSS样式,以设置它们的高度、宽度、字体等。例如,设置控件的高度为200px,宽度为300px,字体为12px: .checkboxl…

    css 2023年6月10日
    00
  • 动态加载外部CSS与JS文件

    动态加载外部CSS与JS文件是指在页面运行过程中,通过JavaScript代码动态地将外部CSS和JS文件引入到页面中。该技术有助于减小页面首屏加载时间,并且可以方便地做到条件加载,提高网页性能。 下面是动态加载外部CSS与JS文件的完整攻略: 1. 动态加载外部CSS文件 代码示例: //创建一个link标签,并为其设置CSS文件的链接地址 var lin…

    css 2023年6月9日
    00
  • Iconfont不能上传如何维护Icon

    如何维护 Iconfont 如果 Iconfont 不能上传,可以通过以下步骤进行维护: 下载 Iconfont 本地文件 打开 Iconfont 项目,在“已选中”的图标中勾选需要使用的图标; 点击页面下方的“下载代码”按钮; 选择“Symbol”类型,点击“下载”,下载得到的压缩包即为本地文件。 在项目中引入 Iconfont 解压下载得到的压缩包,将里…

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