rem响应式布局-自动将px转换为rem--px2rem插件的使用

news2024/11/19 19:39:52

在项目中我们可能要做适配根据不同分辨率做相应的页面处理
当你在项目中采用rem做响应式页面的时候,如果代码里面写的是rem单位的话,会不好判断各种距离、宽高的具体数值,下面介绍一款插件:px2rem,使用此插件可以在代码里依然写px,启动项目会自动将px单位转换为可响应的rem单位

第一步(安装)

npm install postcss-px2rem px2rem-loader --save

第二步

  • 在项目src目录下新建util文件夹(如已有请忽略),在util文件夹下新建rem.js文件,内容如下:
// rem等比适配配置文件
// 基准大小
const baseSize = 16
    // 设置 rem 函数
function setRem() {
    // 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
    const scale = document.documentElement.clientWidth / 1920
        // 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
    document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
    // 改变窗口大小时重新设置 rem
window.onresize = function() {
    setRem()
}

第三步

  • 在项目main.js中引入此文件
import './utils/rem'

第四步

  • 在项目根目录新建vue.config.js文件(如已有请忽略),并在其中添加如下代码
// 引入等比适配插件
const px2rem = require('postcss-px2rem')

// 配置基本大小
const postcss = px2rem({
    // 基准大小 baseSize,需要和rem.js中相同
    remUnit: 16
})

// 使用等比适配插件
module.exports = {
    lintOnSave: true,
    css: {
        loaderOptions: {
            postcss: {
                plugins: [
                    postcss
                ]
            }
        }
    }
}

在这里插入图片这是我在项目中写的位置描述

注意事项

  • 如果某一行css代码就想使用px为单位不想被转换有两种方案
  1. 大写PX。此方案本人实测会被vscode格式化插件格式化为小写,如果没装格式化插件的话此方案是最方便的
  2. 在这行css代码后面加上注释 /*no*/。本人亲测可行
  3. 这种方法对于项目中行内样式转换不了以及组件内的行内样式都不能转rem,例如echarts的图表审查元素查看html结构时就有很多样式是行内写法,目前转换不了
  • 对于页面普通的行内样式写法改进有两种方法
  1. 重新给元素添加class,把行内的写法写到css的class里面
  2. 封装px2rem方法,建议将px2rem方法放在全局,在src/main.js里写如下代码
// main.js
function px2rem(px){
  if(/%/ig.test(px)){ // 有百分号%,特殊处理,表述pc是一个有百分号的数,比如:90%
    return px
  }else{
    return (parseFloat(px) / 37.5) + 'rem'
  }
}
Vue.prototype.$px2rem = px2rem // 放到全局
// A组件页面中
<template>
  <div class="box" :style="{ fontSize: $px2rem('17px')}">测试</div>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows怎么把包含某个关键词的文件移动到一个文件夹中

文章目录 windows怎么把包含某个关键词的文件移动到一个文件夹中问题来源省流版本操作过程具体问题方法一&#xff1a;使用cmd终端解决方法二&#xff1a;使用python脚本 总结 windows怎么把包含某个关键词的文件移动到一个文件夹中 问题来源 今天想移动window文件&#xff0…

Java中的基本容器知识你真的了解过吗?

前言&#xff1a;尽量使用简单易懂的通俗语言让大家初步了解各个重要的知识点。博学之&#xff0c;审问之&#xff0c;慎思之&#xff0c;明辨之&#xff0c;笃行之。 一、容器&#xff08;Collection&#xff09; Collection容器其实是用来存储独立元素的各种数据结构&#xf…

CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

文章目录 0. 写此篇博客的原因1. 物理CPU&#xff0c;核&#xff0c;逻辑CPU概念1.1 内核工作方式1.2 超线程1.3 什么是大小核 2. CPU信息的查询方法2.1 Windows下查询CPU信息的方法2.2 Linux下查询CPU信息的方法方法一&#xff1a;lscpu 整体查看方法二&#xff1a;分别查看 3…

思享工具箱,各种工具汇总

站长,开发者常用在线工具集合 - 思享工具箱 思享工具箱&#xff0c;各种工具汇总 https://tool.4xseo.com/ JSON工具 Json格式化 Json格式化(上下) Json格式化(左右) Json在线压缩转义 Json生成C#实体类 Json生成Java实体类 Json生成Go结构…

戴尔Alienware x15R1 R2原厂win11系统带F12 Support Assist OS Recovery恢复功能

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能 恢复各机型预装系统&#xff0c;带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能&#xff0c;一次性恢复成新机状态&#xff0c;并且以后不用重装系统&#xff…

OpenGL(七)——摄像机

目录 一、前言 二、摄像机空间 2.1 摄像机位置 2.2 摄像机方向 2.3 右轴 2.4 上轴 2.5 LookAt观察矩阵 三、视觉移动 3.1 自由移动 3.2 移动速度 3.3 视觉移动 3.4 缩放 四、摄像机类 一、前言 之前3D物体已经有了&#xff0c;如何在观察空间中随意移动去“游览”3D物…

三维数据学习笔记:ply数据内容介绍

目录 前言1. 三维数据的组成1.1 点云数据1.2 网格数据 2. ply数据内容2.1 属性2.1.1 文本描述属性2.1.2 数据描述属性2.1.2.1 顶点(vertex)2.1.2.2 面(face)2.1.2.3 相机(camera) 2.2 数据2.2.1 顶点(vertex)2.2.2 面(face)2.2.3 相机(camera) 3. 示例3.1 示例13.2 示例2 前言 …

中盐集团:加快推进数智化转型,引领盐行业高质量发展

2022年无论对党和国家&#xff0c;还是对中盐集团&#xff0c;都是极不平凡、极为重要的一年。 这一年&#xff0c;党的二十大胜利召开&#xff0c;在“两个一百年”奋斗目标的历史交汇期&#xff0c;描绘了以中国式现代化全面推进中华民族伟大复兴的宏伟蓝图&#xff0c;开启了…

chatgpt国内能用吗?详细解读gpt的使用方法

chatgpt国内能用吗&#xff1f;Chat GPT是一种自然语言处理技术。它基于深度神经网络&#xff0c;并使用Transformer模型进行预测和生成。Chat GPT是OpenAI公司的一项人工智能技术&#xff0c;并在自然语言处理领域拥有广泛的应用。今天我们就来详细的聊聊国内能不能使用这个问…

Unity3D:内置着色器的用途和性能

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 内置着色器的用途和性能 Unity 中的着色器是通过__材质__来使用的&#xff0c;材质本质上结合了着色器代码与纹理等参数。此处提供了关于着色器/材质关系的深入说明。 当选择材质…

PPP报文解析与代码封装分享

一、简介&#xff1a; PPP&#xff08;Point-to-Point Protocol点到点协议&#xff09;&#xff0c;属于数据链路层协议&#xff0c;这种链路提供全双工操作&#xff0c;并按照顺序传递数据包。 PPP协议是一个协议集包含&#xff1a;LCP&#xff08;Link Control Protocol&am…

DDR3学习(一)

I.MX6U-ALPHA开发板上带有一个256MB/512MB的DDR3内存芯片&#xff0c;一般Cortex-A芯片自带的RAM很小&#xff0c;比如I.MX6U只有128KB 的 OCRAM。 如果要运行Linux的话完全不够用&#xff0c;所以需要外接一片RAM芯片&#xff0c;I.MX6U 支持 LPDDR2、LPDDR3/DDR3&#xff0c;…

互联网陪诊系统功能方案

互联网陪诊系统是一款为用户提供陪同患者到医院就医全程陪同&#xff0c;排队约号&#xff0c;排队检查&#xff0c;排队缴费&#xff0c;取送结果&#xff0c;代办买药&#xff0c;代办问诊等。 业务线上预约平台&#xff0c;让客户享受到最为专业的医院助医服务. 功能介绍 专…

卫星下行链路预算模型(未完待续)

卫星下行链路预算模型 1. 接收端天线模型 简单一些&#xff0c;考虑地球同步卫星多波束通信系统&#xff0c;波束指向固定。波束数量为 N b N_b Nb​. 波束中心在地面的位置可以用经度向量和纬度向量表示: P ⃗ l g [ l 1 , l 2 , . . . , l N b ] P ⃗ l a [ a 1 , a 2 …

Three.js教程:访问几何体对象的数据

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 访问几何体对象的数据 实际开发项目的时候&#xff0c;可能会加载外部模型&#xff0c;有些时候需要获取模型几何体的顶点数据&#xff0c;如果想获取几何体的顶点数据首先要熟…

C++拷贝构造函数---理解(配图文代码)

序&#xff1a; 说实话&#xff0c;博主卡了一天&#xff0c;哎&#xff0c;老了。。。。理解能力不行。有时候还想着先跳过把&#xff0c;结果下班后&#xff0c;还在纠结是不是自己打开的方式不对&#xff0c;这不&#xff0c;刚理解了点&#xff0c;回来写下笔记&#xff0c…

Vue+TS开发定长虚拟列表

1.定长虚拟列表 定义&#xff1a;虚拟列表也有叫无限滚动的&#xff0c;创建一个滚动列表来渲染大量数据 使用场景有大量数据需要渲染时。 **解决了什么问题&#xff1f;**大量数据需要渲染&#xff0c;例如Vue传统使用V-for遍历会创建大量Node节点&#xff0c;对于内存和渲染…

【AI 导航网站】为了更好的收集 AI 资源,我开发了一个 AI 导航网站

AI 导航网站 目前 AI 应用正呈迸发式增长&#xff0c;然而一个人获取资源的途径有限&#xff0c;对于目前存在的AI工具不能很好的收集总结&#xff0c;所以基于此&#xff0c;我开发了这个一个AI导航网站&#xff0c;希望通过它&#xff0c;收集出目前存在的热门的AI应用&…

(一)Springcloud-OpenFeign原理之集成改造原生Openfeign与简单使用

文章目录 1.和原生Openfeign的关系2.Springcloud-Openfeign的改造2.1 改造目标2.2 改造内容2.2.1 集成到Spring2.2.2 替换构造组件 2.3 初步集成使用2.4 支持的扩展点 文章将会介绍Springcloud-Openfeign对原生Openfeign的改造原因及方式&#xff0c;最后提供简单的使用案例及扩…

实验一 进程管理与进程同步

实验一 进程管理与进程同步 实验目的&#xff1a; 了解进程管理的实现方法&#xff0c;理解和掌握处理进程同步问题的方法。 实验内容&#xff1a; 实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算法。 实验步骤&#xff1a; 1.银行家算法流程图 &…