0
点赞
收藏
分享

微信扫一扫

vw+rem移动端自适应布局

芥子书屋 2022-05-06 阅读 155

例如,设计图以6s为标准,2倍尺寸,宽度750px,而你设置根元素字体大小为16px,那么计算出的vw就是2.13333vw,直接在css中设置:

html {
font-size: 2.13333vw;
}

这个时候,我们在标准宽度下根元素实际字体大小是16px,如果到5s手机上面,则根元素实际字体大小为13.653px。根元素的字体大小变了,页面中使用rem来设置的边距、长度、字体大小都会发现改变,页面看起来像是缩小了一点点,但是所有的布局跟6s都是一样的。

6s显示效果:

5s显示效果:

可以看到效果是一致的,换行、截断都显示一致,视觉效果也是一致的。

横屏显示

我们日常使用中,手机都是竖屏显示的,但是也会有横屏显示的时候。如果横屏显示,那么手机的宽度就变成了长度,长度就变成了宽度了,这个时候vw就显示的不对了。看下图,虽然显示没有乱,但是字变的很大了,复杂情况下布局估计也乱了。

还好有应对方法:vmin,这个属性表示视口宽度中最小的那个,竖屏下是vw,横屏下是vh。设置了vim之后显示效果就不错了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWNvQ2vQ-1651813844187)(https://upload-images.jianshu.io/upload_images/23129380-98271028b14d9d7e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

自动转换rem

设计图的设计尺寸一般都是2倍或者3倍,如果此时咱们自己转换成一倍的再去根据根元素计算rem那也太累了。

比如2倍设计图上面的56px,那么咱们需要:56 / 2 / 16,心态崩溃~~~

算是不可能自己算的,找插件呗,这个轮子早就被造好了,postcss-pxtorem就是专门来干这个事情的,配置好设计尺寸,设计倍数,然后css里面直接写56px,插件会自己给你计算成 (56 / 2 / 16)px,是不是很棒。

加载配置一个插件也挺麻烦的,如果你刚好在sass之类的css预处理器,完全可以使用sass function来自动计算。

$rootSize: 16px!default;
$designWidth: 750px!default;
$designRatio: 2!default;

@function rem($px) {
@return $px / $rootSize / $designRatio * 1rem;
}
@function rootVw() {
@return $rootSize / $designW 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 idth * $designRatio * 100vmin;
}

这样就一次性计算好了根元素font-size,也可以使用rem()来自动计算rem了。

html{
font-size: rootVw();
ize,也可以使用rem()来自动计算rem了。

html{
font-size: rootVw();

举报

相关推荐

0 条评论