菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
138
0

react怎么实现移动端适配?

原创
05/13 14:22
阅读数 538676

react实现移动端适配

React中可以淘宝弹性布局方案lib-flexiblepostcss-px2rem来实现移动端项目的适配方案。

下面是详细实现:

第一步

我们把两个包下载下来

yarn add  lib-flexible postcss-px2rem

第二步

在项目入口文件index.js引入lib-flexible

import 'lib-flexible';

图:

1.jpg

第三步

在webpack中配置postcss-px2rem

webpack.config.js

const px2rem = require('postcss-px2rem')
{
    loader: require.resolve('postcss-loader'),
    options: {
         plugins: () => [
             //在postcss-loader的插件中加入这个插件
             //px2rem({ remUnit: 75 }) 的意思就是1rem = 75px 这个是根据750px设计稿来的,如果是620 的就写 62
             px2rem({ remUnit: 75 })
         ]
    }
}

2.jpg

// px2rem({ remUnit: 75 }) 的意思就是1rem = 75px 这个是根据750px设计稿来的,如果是620 的就写 62

第四步

注释掉模板index.html内的

 <!-- <meta name="viewport" content="width=device-width, initial-scale=1" /> -->

create-react-app 的模板index.html在public下

图:

3.jpg

最后调整设计稿大小 输入750px

4.jpg

实际效果 页面按钮样式:

.button{
        width:665px;
        height:88px;
        background:rgba(255,156,0,1);
        border-radius:6px 6px 6px 6px;
        margin-left: 42px;
        padding-top: 30px;
        box-sizing: border-box;
        margin-bottom: 32px;
        .button-title{
            margin: 0 auto;
            width:150px;
            height:30px;
            font-size:31px;
            font-family:PingFang SC;
            font-weight:400;
            color:rgba(255,255,255,1);
            line-height:30px;
        }
    }

在 iphone6/7/8plus下 所有px自动转为适配的rem

5.jpg

在iphone 5/SE下 又转为对应rem 整体效果完全不变

6.jpg

更新一下 最近发现一个问题

这样进行移动端适配后 自己写的样式虽然完全没有问题,但是如果使用Ant Design Mobile进行开发的话,蚂蚁金服的样式会出问题导致无法使用。

解决方案:

配置webpack的postcss-px2rem,让它不去检查/node_modules/,也就是不作用antd等引入的库。但是我去设置postcss-px2rem的exclude选项发现并没有起作用,翻博客发现,postcss-px2rem无法设置exclude排除项,然后有个人修改postcss-px2rem的源码,做了一个postcss-px2rem-exclude可以设置排除项(亲测有用)。

yarn remove postcss-px2rem
yarn add postcss-px2rem-exclude

修改webpack.config.js

const px2rem = require('postcss-px2rem-exclude');
 px2rem({ remUnit: 75 ,exclude:/node_modules/i}),

7.jpg

想要了解更多相关知识,可访问 前端学习网站!!

发表评论

0/200
138 点赞
0 评论
收藏
为你推荐 换一批