react项目网页端适配(利用自定义hooks)

思路就是利用window的resize事件,监听窗口变化,再利用hooks函数,在生命周期创建前监听,在生命周期结束时取消监听。具体看代码

在这里插入图片描述
这个useLifecycles是react-use的一个模仿组件的componentDidMount,和componentWillUnmount。也可以利用useEffect(()=>{},[])代替,接着就是监听window的resize事件,然后触发serRemFunc函数。
再看看setRemFunc的实现。

思路是,封装一个类,传入设计稿大小,要转换的比例,如图

在这里插入图片描述
然后class上面定义一个方法,setRem,拿到最新的窗口大小,并计算将值赋予到html,style.fontSize上。这样就实现一个适配效果。
具体原理就是:
假设倍数为10,设计稿宽度为2000px,屏幕真实宽度为1000px。设计稿纸上一个有10px大小的字体A。
我们借助postcsss-loader帮助我们转换rem。
在这里插入图片描述
规则就是1rem=10px,webpack不知道我们屏幕的宽度,只会按照这个逻辑去转。
我们在1000px的屏幕上开发,写A的时候,依然写的是10px。他会被loader转为1rem。此时1000px伤的html.style.fontSize = 1000/2000 * 10 = 5px,所以在1000px的屏幕上,1rem就是5px。
在2000px上的时候,html.style.fontSize = 2000/2000 * 10 = 10px。所以在2000px上,1rem就是10px。以此达到适配的效果。
这个hooks只是用来改变每个屏幕的rem的大小,具体开发的时候,我们依然可以在1000px上的屏幕开发2000px的设计稿,px保持不变。因为postcss-loader会帮助我们转化为rem。rem通过hooks会在不同的屏幕上适配。
注意,这个postcss-loader转化rem的标准需要与
在这里插入图片描述
这个倍数一样。因为真实宽度/设计宽度只是计算出比例。1rem多少需要后面这个prem决定。

用的时候只需要实例出一个对象即可。在这里插入图片描述
第一次进去需要调用一次setRemFunc,初始化一下fontSize。

接着用的时候就直接在这里插入图片描述
引入并调用即可。
看看效果
在这里插入图片描述
可以看到,当我们窗口大小变化时就可以自适应了。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderlin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值