react怎么实现移动端适配? - 网站

react怎么实现移动端适配?

分类:React入门教程_React框架基础教程 · 发布时间:2020-09-22 10:53 · 阅读:2809

react实现移动端适配

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

下面是详细实现:

第一步

我们把两个包下载下来

yarn add  lib-flexible postcss-px2rem

第二步

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

import 'lib-flexible';

图:

1.jpg-600

第三步

在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-600

// 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-600

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

4.jpg-600

实际效果 页面按钮样式:

.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-600

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

6.jpg-600

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

这样进行移动端适配后 自己写的样式虽然完全没有问题,但是如果使用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-600

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

标签:
react 移动端适配

相关文章

react中怎么使用sass?

方法:1、使用npm工具安装sass-loader和node-sass依赖;2、配置webpack.config.js文件;3、在需要的组件中引入scss,然后添加scss代码即可。

react怎么判断checkbox是否被选中

react判断checkbox是否被选中的方法:可以通过【if ($(&quot;#checkbox-id&quot;).get(0).checked) {}】方法来进行判断。还可以通过原生js方法来进行判断,如【ele.checked】。

react子组件如何向父组件传值?

在react中,首先通过父组件给子组件传递一个函数,然后子组件通过参数传到父组件,通过props来传递函数的引用,并通过回调的方式实现;其实就是子组件调用父组件的方法,把值以形参的方式传出来。

react组件什么时候会重新渲染?

每当组件状态改变时,React就会调用render函数进行重新渲染。更改状态意味着当调用setState函数时,React触发更新;这不仅意味着将调用组件的render函数,而且还意味着重新渲染其所有后续子组件,无论其prop是否已更改。

react组件生命周期有几个阶段?

React组件生命周期有三个阶段:加载、更新和卸载。加载阶段表示一个组件实例被创建并被插入到DOM中;更新阶段表示由状态或属性的改变导致组件的重新渲染;卸载阶段表示组件从DOM中移除。

返回分类 返回首页