vue使用rem, vscode使用px to rem工具

news2024/9/24 13:25:22

一、使用px2rem-loader实现pxtorem

1、安装

首先,我们使用 vue 的脚手架 vue-cli 初始化一个 webpack 项目(前提是已经安装过 vue-cli,具体不再阐述),一些选项根据自己项目需要选择。

vue init webpack my-app

命令执行之后,会在当前目录生成一个以“my-app”命名的项目文件夹。进入项目目录:

cd my-app

使用yarn 安装项目所需依赖后,安装 lib-flexible 和 px2rem-loader:

yarn add lib-flexible
yarn add px2rem-loader --dev

2、配置

在入口页面 index.html 中设置标签:

<meta name="viewport" content="width=device-width,inital-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">

然后在项目入口文件 main.js 中引入 lib-flexible:

import'lib-flexible/flexible.js';

同时,在项目build目录下的 utils.js 中,将px2rem-loader 添加到cssLoaders中。通过搜索找到 generateLoaders 方法,在这里添加:

exports.cssLoaders = function (options) {
  /* 省略代码块 */

  const cssLoader = {
    /* 省略代码块 */
  }

  /* 添加的代码块 */
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 75// 基准大小 baseSize,设计稿宽度/10
    }
  }
  /* 添加的代码块 */


 // generate loader string to be used with extract text plugin 
 //注意添加px2remLoader,不然不起作用
  function generateLoaders (loader, loaderOptions) {
    const loaders = options.usePostCSS ? [cssLoader, postcssLoader,px2remLoader] : [cssLoader,px2remLoader]

    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }
}

最后,使用 yarn dev 重启项目,会发现自己设置的px被转为rem 了
此处需要注意的是px2remloader的remUnit属性,此处填写的是设计稿宽度的十分之一,例如设计稿宽度是750,这里填写75

直接写px,编译后会直接转化成rem —- 除开下面两种情况,其他长度用这个
在px后面添加/no/,不会转化px,会原样输出。 — 一般border需用这个
在px后面添加/px/,会根据dpr的不同,生成三套代码。—- 一般字体需用这个

3、避坑

1、不兼容ipad。
2、对外部引入css,px2rem能不能转换rem问题

在这里插入图片描述

3、如果我们如果引入了第三方框架,他们的样式是另一套写法,样式会被flexible转换,就会破坏框架的样式
例如:mint-ui picker整体会变小
原因是我们之前配置的px2rem也会把我们引入的ui组件也转换成rem的格式,本身组件已经是为移动端做了适配,px2rem又转成了rem就导致其样式变的很小,解决办法:就是我们还是使用flexible.js,然后不使用px2rem,也就是不要上面的配置

px2remLoader暂时不用
function generateLoaders (loader, loaderOptions) {
 const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
 if (loader) {
 loaders.push({
 loader: loader + '-loader',
 options: Object.assign({}, loaderOptions, {
 sourceMap: options.sourceMap
 })
 })
 }

4、不能在index.html头部加name为viewport的meta标签,flexible会自动添加

如果头部设置有:

改变不同的设备时都会是data-dpr="1"

不设置的话一般是:

安卓的data-dpr=1,iphone6,iphone5默认dpr为2,6plus,iphone7,8,x均为3
还有一种不用2pxrem-loader的方式用rem单位,

在index.html里面加一段js文本(设计稿750为例):

如果设计稿是:

.header{
width:500px;
height:500px;
}
样式可以直接写成:

.header{
width:5rem;
height:5rem;
}
设计图的尺寸/100就是该尺寸单位rem。这个是为了方便开发者计算方便。

即使引入第三方插件,也不受影响,开发的时候可以用px单位,也可以用rem单位。

但是这个头部要设置按照1:1的尺寸:

根据自己开发需求,那个方便用那个!

二、 js实现

优点:即使引入第三方插件,也不受影响,开发的时候可以用px单位,也可以用rem单位。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,minimum=1.0,user-scalable=no">
    <title>happy_star</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
  <script>
    fnResize();
    window.onresize = function(){
      fnResize()
    }
    /*设置rem,设计图宽度=750px;1rem=100px;
    */
    function fnResize(){
      var deviceWidth = document.documentElement.clientWidth || window.innerWidth;
      if(deviceWidth >= 750){
        deviceWidth = 750
      }
      document.documentElement.style.fontSize = (deviceWidth/7.5) + 'px';
      console.log(document.documentElement.style.fontSize)
    }
  </script>
</html>

三、vscode开发工具px to rem & rpx & vw (cssrem)

安装完后可设置一下基准font-size:
文件–>首选项–>设置–>cssrem
在这里插入图片描述
Px-to-rem设置成75就可以了。页面写样式的时候:

例如:

.header{
height:90px:
}
选中height:90px这行,Alt+Z 会自动转换成height:1.2rem

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

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

相关文章

深度学习算法数据-网络-算法总结

深度学习算法数据-网络-算法总结 1 数据集大全 通用2D检测数据集、交通标志、车道线、行人检测、3D目标检测、ReID等数据集 2 Backbone知识汇总 该部分主要是针对常见CNN结构以及ViT结构进行汇总&#xff0c;同时也包含轻量化CNN Backbone以及轻量化Transformer模型等高性…

详解pandas的read_excel函数

一、官网参数 pandas官网参数网址&#xff1a;pandas.read_excel — pandas 1.5.2 documentation 如下所示&#xff1a; 二、常用参数详解 1、io 一般指读取文件的路径。【必须指定】 import pandas as pddf pd.read_excel(r"C:\Users\wwb\Desktop\data3.xlsx")p…

chromecast激活

小白误入旁路由添加dns解析&#xff08;1&#xff09;外部网络设置不动&#xff0c;内部网络设置第一个dns服务器指向旁路由自己&#xff0c;第二个dns服务器用常用的保证能用就行&#xff08;2&#xff09;添加dns解析&#xff0c;把安卓ntp&#xff0c;更新时间的服务器链接成…

一文读懂CPU工作原理、程序是如何在单片机内执行的、指令格式之操作码地址码

文章较长,大家可选择性阅读,嘎嘎细 计算机结构 CPU的运行原理 CPU的控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。由运算器执行对应的机器指令,并将结果通过地…

如何用C++扩展NodeJS的能力?

文章目录前言C结合NodeJS的魅力C和NodeJS怎么结合通过Addon增强NodeJS环境的准备1. node-gyp2. nan (Native abstraction for NodeJS)编写Addon的C代码JS方法的C表示JS方法的传入参数 v8::Argument进阶进阶1: 输出一个JS包装类型进阶2: 使用多线程异步计算最后前言 Javascript…

Qt使用第三方库QXlsx将数据库的数据导出为Excel表格

一、参考和下载第三方库QXlsx 参考1 这篇博客对第三方库QXlsx介绍的比较详细。 1、概述 QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件&#xff0c;可以在Qt5支持的任何平台上使用。 2、使用方式 (1) QXlsx可以编译为静态库库使用&#xff08;可以提升项目编…

第03讲:使用kubeadm搭建k8s单master集群方案

一、安装前的准备工作 本实验使用1个master节点和2个node节点。 硬件配置&#xff08;必要&#xff09;&#xff1a;2GB 或更多 RAM&#xff0c;2 个 CPU 或更多 CPU&#xff0c;硬盘 30GB 或更多 开始本实验之前请先按照 使用kubeadm搭建k8s集群的准备工作 进行实验前的准备工…

从零开始带你实现一套自己的CI/CD(五)Jenkins+K8s

目录一、简介二、Jenkins K8s2.1 Jenkins配置k8s-master服务器信息2.2 配置镜像仓库信息2.3 编写k8s yaml文件2.4 将yaml文件推送到k8s2.5 配置免密钥登录2.6 k8s部署yaml资源文件2.7 重新部署yaml资源文件2.8 构建注意事项2.9 完整Jenkinsfile2.10 构建成功三、Webhook源码一…

合宙ESP32S3 CameraWebServe 测试demo

合宙ESP32S3 CameraWebServe 合宙ESP32S3 CameraWebServe测试&#xff0c;我们需要一个OV2640的摄像头模组用来采集图像传输给ESP32的&#xff0c;这里使用的OV2640是之前安信可十周年的白嫖的。现在直接插到合宙ESP32S3开发板&#xff0c;简直完美。还是白嫖好&#xff01;&a…

评估-----评估算法的指标

评估算法的优劣一般会用到以下参数&#xff1a; TN&#xff1a; 真反例 FN: 假反例 TP&#xff1a; 真正例 FP: 假正例 正样本负样本预测正样本TPFP预测负样本FNTN**精确率/查准率&#xff08;precision&#xff09;&#xff1a;**预测正确的正样本个数与预测为正样本的个数的…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(函数发生器)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;函数发生器 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0&#xff0c;打开如图所示的启动界面&am…

3-Spring创建

目录 1.创建一个普通的Maven项目 2.添加Spring框架支持(spring-context&#xff0c;spring-beans) 3.添加启动类 1.创建一个普通的Maven项目 不选择任何模板&#xff0c;直接点Next。 Name&#xff1a;项目名称&#xff1b; Location&#xff1a;项目保存路径&#xff1b; …

Lesson 3. 线性回归的手动实现(3.1 变量相关性基础理论 3.2 数据生成器与 Python 模块编写)

文章目录一、变量相关性基础理论二、数据生成器与 Python 模块编写1. 自定义数据生成器1.1 手动生成数据1.2 创建生成回归类数据的函数2. Python 模块的编写与调用在此前的内容当中&#xff0c;我们已经学习了关于线性回归模型的基本概念&#xff0c;并且介绍了一个多元线性回归…

看了以后大呼过瘾的程序员必备网站,速速收藏!

程序员必备的网站&#xff0c;网络上一搜一大把&#xff0c;动辄几十个甚至一百个&#xff0c;虽说大多数网站也都是实用的&#xff0c;但数量庞杂未免让人眼花缭乱。 这里我就只挑选精华&#xff0c;只挑选出程序员必备的8个网站&#xff0c;服务于程序员的工作&#xff06;生…

Python和MySQL对比(5):用Pandas实现MySQL窗口函数的效果

文章目录一、前言二、语法对比数据表row_number()lead()/lag()rank()/dense_rank()first_value()count()/sum()三、小结一、前言 环境&#xff1a; windows11 64位 Python3.9 MySQL8 pandas1.4.2 本文主要介绍 MySQL 中的窗口函数row_number()、lead()/lag()、rank()/dense_ran…

工业互联网蓬勃发展,出奇才能制胜

近年来&#xff0c;随着我国工业数字化转型的快速推进&#xff0c;我国工业发展进入产业新阶段&#xff0c;工业互联网迎来更加强劲的发展动能和更加广阔的发展空间&#xff0c;我国希望把握住新一轮的科技革命和产业革命&#xff0c;推进工业领域实体经济数字化、网络化、智能…

Cassandra入门教程

文章目录一、数据存储方式和NoSQL1.1 数据存储方式1.2 NoSQL概述1.3 NoSQL的分类二、Cassandra的介绍2.1、Cassandra概述2.1.1 来自百科的介绍2.1.2 Cassandra的Logo2.2、Cassandra特点2.3、Cassandra使用场景2.3.1 特征2.3.2 场景举例三、Cassandra下载、安装、访问3.1 Cassan…

Datawhale 吃瓜教程组队学习 task01

Datawhale 吃瓜教程组队学习task01 还没写完&#xff0c;会持续更新~~ 上个月看了周志华老师的机器学习视频课的前三章&#xff0c;但是后面中断了没看…(主要是懒&#x1f910;) 于是打算这个月继续来学习西瓜书和南瓜书&#x1f92f; Task01&#xff1a;概览西瓜书南瓜书第1、…

【Kubernetes 企业项目实战】04、基于 K8s 构建 EFK+logstash+kafka 日志平台(上)

目录 一、日志对我们来说到底重不重要&#xff1f; 日志打印的常见级别 二、常见的日志收集方案 2.1 EFK 2.2 ELK Stack 2.3 ELKfilebeat 2.4 其他方案 三、EFK 组件详细介绍 3.1 Elasticsearch 组件介绍 3.2 Filebeat 组件介绍 1&#xff09;Flebeat 和 Beat 关系…

贪心策略(五)主持人调度(一、二)

主持人调度&#xff08;一&#xff09;_牛客题霸_牛客网 有 n 个活动即将举办&#xff0c;每个活动都有开始时间与活动的结束时间&#xff0c;第 i 个活动的开始时间是 starti ,第 i 个活动的结束时间是 endi ,举办某个活动就需要为该活动准备一个活动主持人。 一位活动主持人在…