vue中的rem如何配置

目录
  • vue中rem的配置
    • 1.在js中统一计算进行配置
    • 2.借助px2rem 插件
  • vue-cil 3.0 px自动转换为rem适配移动端
    • 1.下载postcss-pxtorem、lib-flexible
    • 2.配置main.js
    • 3.根路径配置postcss.config.js

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`等,`*`表示全部
    }
  }
}

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

(0)

相关推荐

  • vue中rem的配置的方法示例

    在用vue或react等工具搭建一个移动端项目时,怎样做到自适应呢? 当然选择rem布局比较方便快捷. 开发移动端,我们常常要用到rem+flex,那么vue中如何配置呢,我的做法是这样: 1.在js中统一计算配置 代码如下: export default function() { // var devicePixelRatio = 1; // var scale = 1 / devicePixelRatio; // document.querySelector('meta[name="view

  • vue px转rem配置详解

    目录 方法一 一.配置与安装步骤: 方法二 方法三 总结 方法一 一.配置与安装步骤: 1.在 Vue 项目的 src 文件夹下创建一个 config 文件夹: 2.在 config 文件夹中创建 rem.js: 3.将以下代码复制到 rem.js 中: // 基准大小 const baseSize = 32 // 设置 rem 函数 function setRem () { // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改. const scale = document.do

  • 基于vue-cli配置lib-flexible + rem实现移动端自适应

    安装flexible npm install lib-flexible --save 引入flexible 在项目入口文件main.js中添加如下代码,引入flexible import 'lib-flexible' px 转 rem 使用 webpack 的 px2rem-loader,自动将px转换为rem 安装px2rem-loader npm install px2rem-loader --save-dev 配置px2rem-loader 在vue-cli生成的文件中,找到以下文件 bu

  • vue中的rem如何配置

    目录 vue中rem的配置 1.在js中统一计算进行配置 2.借助px2rem 插件 vue-cil 3.0 px自动转换为rem适配移动端 1.下载postcss-pxtorem.lib-flexible 2.配置main.js 3.根路径配置postcss.config.js vue中rem的配置 开发移动端,我们常常会因为把握不好尺度而觉得十分难受,因此可以用到rem+flex进行,那么vue中我们该如何如何配置呢? 1.在js中统一计算进行配置 新建src/utils/rem.js 代码

  • Vue中使用vux的配置详解

    Vue中使用vux的配置,分为两种情况: 一.根据vux文档直接安装,无需手动配置 npm install vue-cli -g // 如果还没安装 vue init airyland/vux2 my-project // 创建名为 my-project 的模板 cd my-project // 进入项目 npm install --registry=https://registry.npm.taobao.org // 开始安装 npm run dev // 运行项目 二.想在已创建的Vue工程

  • 在Vue中使用Avue、配置过程及实际应用小结

    目录 1.使用Avue的原因 2.Avue的官网 3.安装使用 3.1 安装 3.2 在main.js中引入 4 使用Avue组件库 4.1 基本样式 4.2 实际应用 4.3 效果 在新项目中用到一个新的小玩意.还挺不错的.立马安装使用到自己的项目中.哈哈哈 1.使用Avue的原因 在项目中遇到通过点击加号实现输入框的增加.以及对该输入框的输入内容进行验证.有感而发 2.Avue的官网 官网地址:https://avuejs.com/ 3.安装使用 可以直接根据官网的教程来 以下介绍我成功安装

  • vue中使用rem布局代码详解

    1.npm i amfe-flexible 2.import 'amfe-flexible' 然后再,安装postcss-px2rem插件 npm i postcss-px2rem 在package.json中配置 "postcss": { "plugins": { "autoprefixer": {}, "postcss-px2rem": { "remUnit": 26.7 } } } 在vue项目中使用

  • vue项目中使用rem,在入口文件添加内容操作

    在使用vue-cli搭建好项目框架后,在目录结构的index.html文件中添加一段js代码: <script> window.onload = function () { var setRem = function () { // UI设计稿的宽度 var uiWidth = 1200; // 移动端屏幕宽度 var winWidth = document.documentElement.clientWidth; // 比率 var rate = winWidth / uiWidth; //

  • 在Vue中使用highCharts绘制3d饼图的方法

    highcharts是国外知名基于javascript的图表库.由于中文官网的vue中使用highcharts配置繁琐并且需要引入jquery作为依赖,所以弃用. 接下来,给各位伙伴简要的讲叙下highcharts在vue中的使用和配置方法. 首先使用 npm在你的项目中安装vue-highcharts npm install vue-highcharts --save 由于vue-highcharts依赖于highcharts,我们还需要安装后者 npm install highcharts

  • Vue中rem与postcss-pxtorem的应用详解

    rem 布局 rem是根元素(html)中的font-size值. rem布局不多赘述,有很多详细说明rem布局原理的资料. 简单的说,通过JS获取设备宽度动态设定rem值,以实现在不同宽度的页面中使用rem作为单位的元素自适应的效果. 新建rem.js文件,于main.js中引用 // 设计稿以1920px为宽度,而我把页面宽度设计为10rem的情况下 const baseSize = 192; // 这个是设计稿中1rem的大小. function setRem() { // 实际设备页面宽

  • 详解axios在vue中的简单配置与使用

    一.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止 CSRF/XSRF 二.引入方式: npm: $ npm install axios //淘宝源 $ cnpm install axios bower: $ bowe

随机推荐