vue中的rem如何配置

 更新时间:2022年08月01日 09:58:32   作者:前端毒脚show  
这篇文章主要介绍了vue中的rem如何配置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue中rem的配置

开发移动端,我们常常会因为把握不好尺度而觉得十分难受,因此可以用到rem+flex进行,那么vue中我们该如何如何配置呢?

1.在js中统一计算进行配置

新建src/utils/rem.js 代码如下:

const setFontSize = (minFontSize = 12, maxFontSize = 16) => {
    // 7.5根据设计稿的横向分辨率/100得来
    var deviceWidth = document.documentElement.clientWidth;
    // 获取浏览器宽度
    if(deviceWidth > 750) {
        // deviceWidth = 750;
        deviceWidth = 7.5 * 50;
    } else if (!deviceWidth) {
         return;
    }
    const fontSize = Math.max(minFontSize, Math.min(12 * (deviceWidth / 320), maxFontSize));
    document.documentElement.style.fontSize = `${fontSize}px`;
    // 这样子的1rem=font-size的大小
    // 当然,万一你觉得这样子做的rem太小,可以推荐你第二种写法,相对更加简便,代码如下(注释的)
     // 获取浏览器宽度
    //if(deviceWidth > 750) {
        // deviceWidth = 750;
        //deviceWidth = 7.5 * 50;
    //}
    // document.documentElement.style.fontSize = `${deviceWidth / 7.5}px`;
    // 此时的fontSize大小为50px(375屏幕的时候)
    // 禁止双击放大
    document.documentElement.addEventListener('touchstart', function (event) {
        if (event.touches.length > 1) {
            event.preventDefault();
        }
    }, false);
    var lastTouchEnd = 0;
    document.documentElement.addEventListener('touchend', function (event) {
        var now = Date.now();
        if (now - lastTouchEnd <= 300) {
            event.preventDefault();
        }
        lastTouchEnd = now;
    }, false);
}
export default {
    setFontSize ,
}

然后:在main.js中进行引入:

// 样式适应处理
import Rem from './utils/rem';
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: { App },
});
Rem.setFontSize();

当然!!!!!不能忘记设置默认大小

在asstes/gloabl.less中设置默认大小

//通用样式
body{
  font-family: "PingFangSC-Regular","PingFang SC","兰亭黑","Helvetica",sans-serif;
  color: @color-text;
  font-size: 14px;
  // font-sizt: 0.28rem; 375屏时
  background-color: @color-background;
}

记得要在main.js中引入

// 自定义样式
require('./assets/css/global.less');
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: { App },
});
Rem.setFontSize();

2.借助px2rem 插件

  • 引入
npm install  px2rem-loader  lib-flexible --save 
                      or
yarn add px2rem-loader lib-flexible --save
  • 在项目入口文件main.js中引入lib-flexible
import 'lib-flexible/flexible.js'
  • 在build下的 utils.js中,找到generateLoaders 方法,在这里添加。
const px2remLoader = {
  loader: 'px2rem-loader',
  options: {
  remUnit: 37.5
  }
}
function generateLoaders (loader, loaderOptions) {
const loaders = [cssLoader, px2remLoader]
 if (loader) {
   loaders.push({
   loader: loader + '-loader',
   options: Object.assign({}, loaderOptions, {
     sourceMap: options.sourceMap
   })
 })
}

重启项目,会发现自己设置的px被转为rem了

以上实现转换适用于:

(1)组件中编写的下的css

(2)从index.js或者main.js中import ‘…/…/static/css/reset.css’引入css

(3)在组件的中引入css

另外的情况不适用:

(1)组件中@import “…/…/static/css/reset.css (可考虑上面(2)、(3)的形式引入)

(2)外部样式:

(3)元素内部样式:style=”height: 417px; width: 550px;”

vue-cil 3.0 px自动转换为rem适配移动端

1.下载postcss-pxtorem、lib-flexible

npm install lib-flexible --save-dev
npm install postcss-pxtorem --save-dev

2.配置main.js

import 'lib-flexible/flexible' // px自动转rem

3.根路径配置postcss.config.js

module.exports = {
  plugins: {
    autoprefixer: {},
    "postcss-pxtorem": {
      "rootValue": 75, // 设计稿宽度的1/10,
      "propList": ['*'],// 需要做转化处理的属性,如`hight`、`width`、`margin`等,`*`表示全部
    }
  }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue.js中的计算属性、监视属性与生命周期详解

    Vue.js中的计算属性、监视属性与生命周期详解

    最近在学习vue,学习中遇到了一些感觉挺重要的知识点,感觉有必要整理下来,这篇文章主要给大家介绍了关于Vue.js中计算属性、监视属性与生命周期的相关资料,需要的朋友可以参考下
    2021-06-06
  • Vue Element前端应用开发之根据ABP后端接口实现前端展示

    Vue Element前端应用开发之根据ABP后端接口实现前端展示

    本篇着重介绍基于ABP后端接口信息,实现对前端界面的开发工作。
    2021-05-05
  • 浅谈Vue.set实际上是什么

    浅谈Vue.set实际上是什么

    这篇文章主要介绍了浅谈Vue.set实际上是什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue.js学习笔记之修饰符详解

    Vue.js学习笔记之修饰符详解

    本篇文章主要介绍了Vue.js学习笔记之修饰符,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Vue组件通信的几种实现方法

    Vue组件通信的几种实现方法

    这篇文章主要介绍了Vue组件通信的几种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue parseHTML 函数源码解析AST基本形成

    vue parseHTML 函数源码解析AST基本形成

    这篇文章主要为大家介绍了vue parseHTML 函数源码解析AST基本形成,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue控制多行文字展开收起的实现示例

    vue控制多行文字展开收起的实现示例

    这篇文章主要介绍了vue控制多行文字展开收起的实现示例(也叫控制文字展开隐藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • vue-cli 介绍与安装

    vue-cli 介绍与安装

    这篇文章主要给大家介绍的是vue-cli 介绍与安装,vue-cli是和vue进行深度组合的工具,可以快速帮我们创建vue项目,并且把一些脚手架相关的代码给我们创建好。真正使用vue开发项目,都是用vue-cli来创建项目的,下面文章详细内容,需要的朋友可以参考一下
    2021-10-10
  • vue路由监听的一些常用方式

    vue路由监听的一些常用方式

    有时在页面刷新或者返回等操作时,想监听路由变化进行数据更新等操作,下面这篇文章主要给大家介绍了关于vue路由监听的一些常用方式,需要的朋友可以参考下
    2023-10-10
  • vue如何使用笛卡尔积算法构建sku表格

    vue如何使用笛卡尔积算法构建sku表格

    这篇文章主要介绍了vue如何使用笛卡尔积算法构建sku表格问题,具有很好的价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论