首页 > 其他分享 >移动端/H5/rem 开发,使用lib-flexible 和 postcss-pxtorem适应不同分辨率

移动端/H5/rem 开发,使用lib-flexible 和 postcss-pxtorem适应不同分辨率

时间:2023-08-29 18:44:53浏览次数:29  
标签:匹配 lib 设计图 H5 rem exclude postcss flexible pxtorem

一、安装

 1. 直接使用npm包管理工具进行下载

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

*如果报错:“Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.”报错的意思是postcss-pxtorem为8.0,但实际上官网最新版本为6.0(有可能是6.0版本与vant不兼容),所以直接把postcss-pxtorem版本降成对应的版本就好了

npm i [email protected] --save

 

二、使用

  1. flib-flexible 使用

  直接在项目中引用,一般在main.js中引用

  

import "lib-flexible"

 注意: 因为lib-flexible会根据屏幕生成相对的meta(name=viewport)标签,所以我们在index.html文件中删除meta标签(如果使用的是amfe-flexible则不需要删除)

  2. postcss-pxtorem 使用

vue.config.js中添加以下配置代码

module.exports = {
 .... css: { loaderOptions: { postcss: { plugins: [ require(‘postcss-pxtorem‘)({ rootValue: 16, unitPrecision: 5, propList: ['font', 'font-size', 'line-height', 'letter-spacing'], selectorBlackList: [], replace: true, mediaQuery: false, minPixelValue: 0, exclude: /node_modules/i }), ] } } }, }

  

1)rootValue(Number | Function)表示根元素字体大小或根据input参数返回根元素字体大小。

  • 假如设计图给的宽度是750,我们通常就会把rootValue设置为75(设计图宽度的十分之一),这样我们写样式时,可以直接按照设计图标注的宽高来1:1还原开发。
  • 如果你引用像mint-ui、vant这样的第三方UI框架,因为第三方框架没有兼容postcss-pxtorem
  • 你可以将rootValue的值设置为设计图宽度(这里假设为750px)75的一半 ==> 37.5,即可以1:1还原mint-ui的组件,否则会样式会有变化,例如按钮会变小。
  • 既然设置成了37.5 那么我们必须在写样式时,也将值改为设计图的一半。

2)unitPrecision (Number)允许REM单位增加的十进制数字。

3)propList (Array)可以从px更改为rem的属性。

  • 值必须完全匹配。
  • 使用通配符*启用所有属性。例:['*']
  • *在单词的开头或结尾使用。(['*position*']将匹配background-position-y)
  • 使用!不匹配的属性。例:['*', '!letter-spacing']
  • 将“ not”前缀与其他前缀组合。例:['*', '!font*']

4)selectorBlackList (Array)要忽略的选择器,保留为px。

  • 如果value是字符串,它将检查选择器是否包含字符串。
  • ['body'] 将匹配 .body-class
  • 如果value是regexp,它将检查选择器是否匹配regexp。
  • [/^body$/]将匹配body但不匹配.body

5)replace (Boolean)替换包含rems的规则。

6)mediaQuery (Boolean)允许在媒体查询中转换px。

7)minPixelValue(Number)设置要替换的最小像素值。

8)exclude(String, Regexp, Function)要忽略并保留为px的文件路径。

  • 如果value是字符串,它将检查文件路径是否包含字符串。
  • 'exclude' 将匹配 \project\postcss-pxtorem\exclude\path
  • 如果value是regexp,它将检查文件路径是否与regexp相匹配。
  • /exclude/i 将匹配 \project\postcss-pxtorem\exclude\path
  • 如果value是function,则可以使用exclude function返回true,该文件将被忽略。
  • 回调函数会将文件路径作为参数传递,它应该返回一个布尔结果。
  • function (file) { return file.indexOf('exclude') !== -1; }

 三、补充

  忽略单个属性的最简单方法是在像素单位声明中使用大写字母,将px写为Px。

  比如:

.ignore {
    border: 1Px solid; // ignored
    border-width: 2PX; // ignored
}

四、实践结果
  我此次使用的是vant2UI框架,UI设计图给的是750,但是为了与vant统一,我在蓝湖中自定义将指定宽度改为了375
  

 

 

 

 

 


  

  

标签:匹配,lib,设计图,H5,rem,exclude,postcss,flexible,pxtorem
From: https://www.cnblogs.com/zeosky-zhe/p/17665588.html

相关文章

  • vscode 自动转换rem插件
    使用vsCode中的插件安装插件cssrem然后打开文件–>首选项–>设置搜索cssrem 修改rem的基准值然后重启vscode就可以直接使用上面的基准值需要我们根据屏幕的大小去计算比如我们拿到是1920分辨率屏幕的设计稿那么基准值就等于1920/100=19.20px也就是说1rem=19.20px......
  • Talib的技术指标
    资料1Talib中的指标主要包括下面几类:OverlapStudies(交叉分析):这种类型的指标使用移动平均线、布林带等技术分析工具,通过计算不同时间段内价格的平均值和标准差等统计量,来判断价格趋势、支撑/阻力位等。MomentumIndicators(动量指标):这种类型的指标可以衡量价格变化的速度和力度......
  • 论文阅读 《Pingmesh: A Large-Scale System for Data Center Network Latency Measur
    背景在我们内部产品中,一直有关于网络性能数据监控需求,我们之前是直接使用ping命令收集结果,每台服务器去ping(N-1)台,也就是N^2的复杂度,稳定性和性能都存在一些问题,最近打算对这部分进行重写,在重新调研期间看到了Pingmesh这篇论文,Pingmesh是微软用来监控数据中心网络情况......
  • 在QT中安装dlib库
    一、下载并安装相关软件包1、cmake链接:https://pan.baidu.com/s/1g57OuGMad_idSQAzkkpm4w提取码:02322、QT链接:https://pan.baidu.com/s/1j8X7z3iHG-0IQVnjlAAtIQ提取码:hl8w3、dlib链接:https://pan.baidu.com/s/1DA1vHmt1Tx6cFp0Y2gCUPQ提取码:jmen二、生成静态库和头文件新建一个F:/......
  • px转rem适配方案之postcss-pxtorem
    一、安装npminstallpostcss-pxtorem--save-dev二、增加postcss.config.js文件在目录文件下增加postcss.config.js并添加相关配置//https://github.com/michael-ciniawsky/postcss-load-configmodule.exports={'plugins':{//toedittargetbrowsers:use......
  • centos7下安装libreoffice供word和ppt转pdf预览使用
    一、卸载系统当前的libreoffice并安装新的,执行如下命令:yumremovelibreoffice-*在命令行执行libreoffice--version,检查是否已经安装LibreOffice。1、在centos7下安装LibreOffice,可直接使用yum安装即可,在命令行输入以下命令:yuminstalllibreofficeyuminstalllibreoffice-he......
  • 在lua中如何remove掉table里面的数据
    在lua开发中,数据保存一般都会用tabel来保存,但是在用到table之后,我们都会去清理table,那么我该怎么做呢?我们会调用到table中的remove函数来清理,但是需要注意的是,remove(table,[pos]),删除在pos位置上的元素,后面的元素会向前一栋,然后删除的index会向前移动,导致删除后的数据不是你想要的,......
  • matplotlib中修改文本属性
    Text对象在matplotlib中,文字的设置(例如字体、字号、样式等)是通过Text对象来控制的。Text对象在matplotlib中表示文本实体。允许访问和修改文本属性的函数。1.title和set_title:设置图形或轴的标题。title_obj=plt.title('MainTitle')title_obj=ax.set_title('AxesTi......
  • 百亿补贴通用H5导航栏方案 | 京东云技术团队
    背景在移动端页面中,由于屏幕空间有限,导航条扮演着非常重要的角色,提供了快速导航到不同页面或功能的方式。用户也通常会在导航条中寻找他们感兴趣的内容,因此导航条的曝光率较高。在这样的背景下,提供一个动态灵活的导航条,为产品赋能,变得尤其重要。使用原生导航栏现状拿iOS原生导航条......
  • CF1385 F. Removing Leaves 换根dp
    CF1385F.RemovingLeaves换根dp题目链接题意:给你一棵树,有一种操作,选择k个叶子,若叶子节点的父亲相同,则可删去这k个节点,问你最多能操作多少次。做法:这题的官方做法是贪心+bfs,不过用换根dp的方法也是可做的。首先我们常规选择节点1为根节点,跑一遍dfs,主要记录下面这些变量......