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

相关文章

  • CSS3中Color的一些特性介绍

    CSS3中Color的一些特性介绍 CSS3中的颜色特性为开发人员提供了更多的选择和控制,以下是一些常见的CSS3颜色特性: RGBA颜色 RGBA颜色是一种CSS3颜色格式,它允许开发人员指定红、绿、蓝和透明度的值。RGBA颜色的语法如下: color: rgba(red, green, blue, alpha); 其中,red、green和blue的值介…

    css 2023年5月18日
    00
  • Dreamweaver怎么设计网站的demo原型?

    Dreamweaver是一款非常优秀的网站开发工具,在设计网站的demo原型时,可以通过以下步骤进行: 1. 创建新网站 首先打开Dreamweaver,点击菜单栏中的“文件(File)”>“新建(New)”>“网站(Site)”,然后按照提示输入网站名称和保存位置等信息。成功创建网站后,Dreamweaver会自动进入代码编辑页面。 2. 设计…

    css 2023年6月11日
    00
  • 浅谈pc和移动端的响应式的使用

    下面是关于“浅谈PC和移动端响应式的使用”的完整攻略。 什么是响应式设计? 响应式设计是一种设计方法,它能够使网站在不同的设备上展现不同的样式和布局。这种方法可以通过媒体查询、弹性网格布局和图片自适应等方式实现。 响应式设计的原理 响应式设计基于媒体查询,能够让网站在不同的设备上自动适应不同的样式。 媒体查询是CSS3的一个新功能,它根据不同的设备分别应用不…

    css 2023年6月10日
    00
  • javascript设置页面背景色及背景图片的方法

    首先我们来学习如何使用JavaScript设置页面的背景色。 设置背景色 步骤1: 定义HTML文件,我们需要先定义一个HTML文件,例如这里的index.html文件。 <!DOCTYPE html> <html> <head> <title>JavaScript设置页面背景色</title> &…

    css 2023年6月9日
    00
  • Flutter WebView性能优化使h5像原生页面一样优秀

    下面是“Flutter WebView性能优化使h5像原生页面一样优秀”的完整攻略: 1. WebView优化概述 WebView是Flutter中用于展示H5页面的控件,但由于H5页面通常需要网络请求,需要加载大量的资源文件和处理复杂的交互逻辑,这就给WebView带来了性能问题。为了保证WebView的性能,并达到H5页面像原生页面一样的优秀体验,我们需…

    css 2023年6月10日
    00
  • Flask Cookie 使用方法详解

    Flask 是一个 Python Web 框架,Cookie 是一个小型文本文件,由服务器发送给 Web 浏览器并保存在本地计算机上,用于跟踪用户。本文将详细介绍 Flask 中的 Cookie 处理,并提供代码示例。 Flask 的 Cookie 模块 Flask 的 Cookie 模块是 Flask 对 Python 标准库中 Cookie 模块的封装。…

    Flask 2023年3月13日
    00
  • 关于css设置层透明

    设置层透明可以使用CSS3中的opacity属性或RGBA颜色值,以下是详细的攻略: 使用opacity属性设置层透明 opacity的范围为0到1,0表示完全透明,1表示完全不透明。可以将opacity属性应用于想要设置透明度的HTML元素的样式中,如下示例: div { background-color: #000; opacity: 0.5; } 以上…

    css 2023年6月9日
    00
  • 在Django的form中使用CSS进行设计的方法

    在 Django 的表单中使用 CSS 进行样式设计,可以使表单更美观,便于用户操作。下面是一个完整的攻略: 步骤一:将 Django 表单类绑定到 HTML 表单上 让我们考虑一个简单的表单,它包含一个文本输入框和一个提交按钮。 # forms.py from django import forms class MyForm(forms.Form): na…

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