适配移动端操作如下:

安装 postcss-pxtorem 、amfe-flexible

npm i postcss-pxtorem
npm i amfe-flexible

amfe-flexible(可以安装,可以自己写),如下是我通过 amfe-flexible 修改的flexible 文件:

(function flexible(window, document) {
var docEl = document.documentElement;
var dpr = window.devicePixelRatio || 1; // adjust body font size
function setBodyFontSize () {
if (document.body) {
document.body.style.fontSize = 12 * dpr + 'px';
} else {
document.addEventListener('DOMContentLoaded', setBodyFontSize);
}
}
setBodyFontSize(); // set 1rem = viewWidth / 10
function setRemUnit() {
let rem =
Math.floor(
(docEl.clientHeight > docEl.clientWidth
? docEl.clientWidth / 10
: (docEl.clientHeight / 10) * 0.7) * 100
) / 100;
docEl.style.fontSize = rem + 'px';
} setRemUnit(); // reset rem unit on page resize
window.addEventListener('resize', setRemUnit);
window.addEventListener('pageshow', function (e) {
if (e.persisted) {
setRemUnit();
}
}); // detect 0.5px supports
if (dpr >= 2) {
var fakeBody = document.createElement('body');
var testElement = document.createElement('div');
testElement.style.border = '.5px solid transparent';
fakeBody.appendChild(testElement);
docEl.appendChild(fakeBody);
if (testElement.offsetHeight === 1) {
docEl.classList.add('hairlines');
}
docEl.removeChild(fakeBody);
}
})(window, document);

在index.js 中引入当前amfe-flexible.js

如果你使用的 craco 进行配置,配置如下

module.exports = {
style: {
postcss: {
mode: 'extends',
loaderOptions: (postcssLoaderOptions, { env, paths }) => {
postcssLoaderOptions.postcssOptions.plugins = [
...postcssLoaderOptions.postcssOptions.plugins,
[
'autoprefixer',
{
overrideBrowserslist: [
'last 2 version',
'>1%',
'Android >= 4.0',
'iOS >= 7'
]
}
],
[
'postcss-pxtorem',
{
rootValue ({ file }) {
// return file.indexOf('antd-mobile') > -1 ? 37.5 : 75;
return 37.5;
},
unitPrecision: 2, //只转换到两位小数
propList: ['*']
}
]
];
return postcssLoaderOptions;
}
}
},
}

使用 npm eject 配置webpack

{
loader: require.resolve('postcss-loader'),
options: {
postcssOptions: {
ident: 'postcss',
config: false,
plugins: !useTailwind
? [
'postcss-flexbugs-fixes',
[
'postcss-preset-env',
{
autoprefixer: {
flexbox: 'no-2009'
},
stage: 3
}
],
'postcss-normalize',
[
'postcss-pxtorem',
{
rootValue: 37.5,
propList: ['*']
}
]
]
: [
'tailwindcss',
'postcss-flexbugs-fixes',
[
'postcss-preset-env',
{
autoprefixer: {
flexbox: 'no-2009'
},
stage: 3
}
]
]
},
sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment
}
}

运行代码

react配置postcss-pxtorem适配的更多相关文章

  1. 快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求

    本文快速分享一下快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求的方法,供大家参考. 原文发表于我的技术博客 零配置方案 最新的苹果审核政策对 API 的 IPv6 以及 ...

  2. vue-cli 2.x和3.x配置移动端适配px自动转为rem

    移动端适配一直都是个大问题,现在也出现了各种各样的解决方案,比如 rem, vw 百分比等,但是比较成熟的切比较容易编写的还是 rem,他是相对于根元素的 font-size 进行等比例计算的. 但是 ...

  3. 显示react配置

    1. 由于react默认隐藏webpack配置需要手动显示. npm run eject //Are you sure you want to eject? This action is perman ...

  4. react 配置ant时遇见的一个Error: Multiple configuration files found. Please remove one: – package.json#babel – .babelrc 解决方案

    这个问题是create react app 里面的package.json里面已经配置了   "babel": {     "presets": [       ...

  5. vue cli3 配置postcss

    1.安装postcss-import,postcss-cssnext 包 2.修改package.json 将postcss响应的内容替换为 "postcss": { " ...

  6. webpack+react配置

    $ npm install -g webpack $ npm install -g webpack-dev-server如果遇到类似 EACESS 错误,则需要用超级用户的模式运行 $ sudo np ...

  7. react配置之浅谈

    //复习 1 .块级作用域 let 和const 2 变量结构 默认值 一般往后写 rest参数(了解) 箭头函数(重要)(x,y)=>{} 3.map 存储高级键值对 4.set集合(去重) ...

  8. react 配置开发环境

    一:先自行下载安装node和npm 二:cnpm install create-react-app -g 三:create-react-app my-project 四:cd my-project  ...

  9. 配置 FIS 来适配 go revel 框架以优化前端缓存策略

    对于前端工程师来说,浏览器缓存优化是个永远的话题.前几天看了知乎上的一个问答:<大公司里怎样开发和部署前端代码?>,深以为然,所以决心使用 FIS 来优化自身的前端文件. 我们的项目使用了 ...

随机推荐

  1. Python 工匠:使用数字与字符串的技巧

    序言 这是 "Python 工匠"系列的第 3 篇文章. 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础.在 Python 里有三种数值类型:整型(i ...

  2. zookeeper的linux安装

    wget下载(很慢):wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz 或者 ...

  3. .NET LoongArch64 正式合并进入.NET

    国内自主的龙芯,在做龙芯技术生态就把 .NET 作为其中一部分考虑进去,这也将对接下来国内.NET应用场景充满了期待.通过dotnet/runtime 可以知道现在龙芯版本的 .NET 已经合并到.N ...

  4. Error:java: Can‘t generate mapping method with primitive return type.报错

    原因:Spring项目中使用了JPA以及Mybatis–mapper文件注解引错包导致编译错误 解决: 错误:import org.mapstruct.Mapper;正确路径:import org.a ...

  5. 团队Beta演示

    组长博客 本组(组名)所有成员 短学号 姓名 2236 王耀鑫(组长) 2210 陈超颖 2209 陈湘怡 2228 许培荣 2204 滕佳 2205 何佳琳 2237 沈梓耀 2233 陈志荣 22 ...

  6. 【Hadoop】10、Flume组件

    目录 Flume组件安装配置 1.下载和解压 Flume 2.Flume 组件部署 3.使用 Flume 发送和接受信息 Flume组件安装配置 1.下载和解压 Flume # 传Flume安装包 [ ...

  7. docker 安装和错误解决方案

    安装 x64 架构 install docker switch mirror docker desktop docker run -d -p 80:80 docker/getting-started ...

  8. 基于 Jenkins + Kubernetes + Argo CD 的完整 DevOps 流程记录(1) - 环境部署

    一.环境准备 1.1 镜像仓库 整套 DevOps 流程使用 Harbor 作为内部镜像仓库,所有构建产物(镜像)都会推送到 Harbor,以备后续进行项目部署.Harbor 从 2.x 版本开始支持 ...

  9. 【多线程】创建线程方式二:实现Runnable接口

    创建线程方式二:实现Runnable接口 代码示例: /** * @Description 实现Runnable接口,重写run方法,执行线程需要丢入Runnable接口实现类,调用start方法 * ...

  10. 824. Goat Latin - LeetCode

    Questioin 824. Goat Latin Solution 题目大意:根据要求翻译句子 思路:转换成单词数组,遍历数组,根据要求转换单词 Java实现: 用Java8的流实现,效率太低 pu ...