首页 > 其他分享 >vue3-vite下配置postcss-pxtorem进行移动端适配

vue3-vite下配置postcss-pxtorem进行移动端适配

时间:2022-11-29 11:26:20浏览次数:33  
标签:body amfe 适配 rem vite vue3 postcss pxtorem

如果使用Vue进行移动端页面的开发,需要对不同机型的宽高进行适配。最常用的方法是使用amfe-flexablepostcss-pxtorem这两个插件来帮助进行适配。

amfe-flexable

amfe-flexable是阿里发布的一套可伸缩适配方案。它能根据设备的宽高来设置页面body元素的字体大小,将1rem设置为设备宽度/10以及在页面大小转换时可以重新计算这些数值。

具体可见github连接:https://github.com/amfe/lib-flexible

postcss-pxtorem

postcss-pxtorem是postcss的一个插件,可以将对应的像素单位转换为rem。在vite中可以直接对其进行配置,因为vite已经集成了postcss。

其中最重要的配置属性为:

  • rootValue:根元素的值,即1rem对应的像素值大小。一般设置为设计稿尺寸/10

以及一些其他属性:

  • propList:需要进行转换的css属性的值,可以使用通配符。如:*意思是将全部属性单位都进行转换;["*position*"]会匹配到background-position-y
  • selectorBlackList:不进行单位转换的选择器。如设置为字符串body,则所有含有body字符串的选择器都不会被该插件进行转换;若设置为[/^body$/],则body会被匹配到而不是.body
  • exclude:不需要进行单位转换的文件
  • mediaQuery:是否允许像素在媒体查询中进行转换

在Vite中进行配置使用

插件安装

//npm方式
npm install postcss-pxtorem --save-dev
npm install amfe-flexible --save-dev

//pnpm方式
pnpm add postcss-pxtorem -D
pnpm add amfe-flexible -D

main.ts中引入:

import 'amfe-flexible'

可以看到,html元素的字体大小被设置为**设备宽度/10,**证明amfe-flexible配置成功:
在这里插入图片描述
vite.config.js中配置postcss-pxtorem

import postCssPxToRem from "postcss-pxtorem"
...

export default defineConfig({
  ...
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          rootValue: 16, // 1rem的大小
          propList: ['*'], // 需要转换的属性,这里选择全部都进行转换
        })
      ]
    }
  },
...
})

这里本来设置el-input元素的宽度为350px,但是使用了postcss-pxtorem之后会将px转换为rem,参照的基准就是rootValue,所以此处得到350/37.5=9.333…rem
在这里插入图片描述
由于rootValue是固定的,所以元素计算出来的rem单位也是一个固定的值(如上例的9.33)。但是在amfe-flexable会计算不同宽高设备的元素的根字体大小,所以每次都能计算得到一个适配的宽高。如上例中,9.333rem在iPhone X(375812)中会被计算为9.333*37.5
在这里插入图片描述
但是在iPhone 8 Plus(414
736)中,同样是9.333rem,这个元素的宽度被计算为9.333*41.4
在这里插入图片描述
这样,我们就可以按照设计稿给出的像素尺寸进行开发,而在不同的移动设备上进行适配了。

标签:body,amfe,适配,rem,vite,vue3,postcss,pxtorem
From: https://www.cnblogs.com/littleDinosaurs/p/16934871.html

相关文章

  • vue3响应式原理以及ref和reactive区别还有vue2/3生命周期的对比,第二天
    前言:前天我们学了ref和reactive,提到了响应式数据和Proxy,那我们今天就来了解一下,vue3的响应式在了解之前,先复习一下之前vue2的响应式原理vue2的响应式:原理:对......
  • 【Vue】vite + ts 配置别名
    1.vite.config.tsimport{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'import{resolve}from'path'function_resolve(dir:string){returnreso......
  • vue3实现搜索高亮
    vue3实现搜索高亮原文:Vue3文本高亮-掘金(juejin.cn)思路将input的文本进行转义处理(eacapeReg函数),v-html就不能相信用户的一切输入,并且需要匹配**.()*****......
  • React Native不同设备分辨率适配和设计稿尺寸单位px的适配
    React Native中使用的尺寸单位是dp(一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px),而设计师使用的是px,这两种尺寸如何换算呢?官方提供了PixelRatio进......
  • vue3相较于vue2的改动
    v-if和v-for的优先级在vue2中:当v-if和v-for同时使用时,v-for的优先级高于v-if(因此我们通常需要计算属性先对数据进行加工处理,以达到性能优化的目的)在vue3中:当v-if和v-for......
  • vue3 第二天vue响应式原理以及ref和reactive区别
    前言:前天我们学了ref和reactive,提到了响应式数据和Proxy,那我们今天就来了解一下,vue3的响应式在了解之前,先复习一下之前vue2的响应式原理vue2的响应式:原理:对......
  • 进度条 vue3 vite
    NProgress.js官网 https://ricostacruz.com/nprogress/安装:npminstallnprogress使用://引入NProgress进度条importNProgressfrom'nprogress'import'nprogres......
  • Vue3+Vite项目中 使用WindiCSS.
    之前工作有了解过根据类名来写元素的样式,一听就发出疑问:这样写项目可读性恐怕不是很好吧。。。  之后来到杭州工作后,开始使用WindiCSS后发现真香!!! 由于近期所写的项......
  • Vue3快速上手
    Vue3快速上手<imgsrc="https://user-images.githubusercontent.com/499550/93624428-53932780-f9ae-11ea-8d16-af949e16a09f.png"style="width:200px"/>1.Vue3简介......
  • 基于SqlSugar的开发框架循序渐进介绍(22)-- Vue3+TypeScript的前端工作流模块中实现统一
    在工作流页面中,除了特定的业务表单信息外,往往也需要同时展示通用申请单的相关信息,因此在页面设计的时候需要使用一些组件化的概念来实现动态的内容展示处理,本篇随笔介绍Vue3......