资讯专栏INFORMATION COLUMN

vw+rem移动端自适应布局

Little_XM / 1000人阅读

摘要:本文同步发布于我的个人博客上移动端自适应布局不管是面试还是工作过程中,移动端的布局都比较常见,而移动端适配方法也是多种多样。表示当前视口宽度的百分之一。同时在移动端,的兼容性还不错,完全可以直接使用。这样完成了一个简单好用的移动端布局了

本文同步发布于我的个人博客上 - vw+rem移动端自适应布局

不管是面试还是工作过程中,移动端的布局都比较常见,而移动端适配方法也是多种多样。一般来说,主要还是从viewport、rem、百分比几个点下手。

一般来说,开发过程中,我们希望能够直接按照设计图来开发,不管设计图是两倍还是三倍图,能够直接写设计图尺寸而不需要换算,同时有高质的设计图还原度,想想都比较爽。

这里介绍一种使用vw和rem来布局的方案。

该方案思路主要是,设置视口宽度为设备宽度,使用vw来动态设置根元素的font-szie,同时使用sass的css function来实现设计尺寸转rem的功能,从而实现一套不需要js计算而自动设置根元素font-szie的rem布局。

vw

不了解vw的同学可以了解一下vw。vw表示当前视口宽度的百分之一。

rem布局过程中依赖于根元素的font-size属性,而如果设置一个固定的font-size,再使用rem来布局,会导致小屏手机视觉上觉得网页被放大,而大屏手机上则显得网页布局稀疏。

所以咱们需要根据收据的屏幕大小等比的设置font-size,从而实现大小屏手机视觉一致的效果。实现这个功能可以使用js在页面载入时,读取屏幕宽度,再根据设计图标准宽度做一些转换。

而使用vw天然就是一个根据屏幕宽度来做计算的长度单位,完美实现以上js计算功能。同时在移动端,vw的兼容性还不错,完全可以直接使用。

计算方法:

// 设计图标准根元素字体 / 设计图标准宽度 * 100
const vw = 16 / 750 * 100

例如,设计图以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之后显示效果就不错了。

自动转换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 / $designWidth * $designRatio * 100vmin;
}

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

html{
    font-size: rootVw();
}
body{
    padding: rem(15px);
}

这样完成了一个简单好用的移动端布局了~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114803.html

相关文章

  • 移动端自适应布局方案

    摘要:背景现在工作中有超过一半的时间用于移动端项目的开发,包括嵌入页,微信页面和移动页。经过研究,我在公司的多个移动端项目使用了布局来解决移动端自适应布局的问题。简单的说它就是一个相对单位,布局是一个流行的解决移动端响应式布局的方案。 背景 现在工作中有超过一半的时间用于移动端项目的开发,包括app嵌入页,微信页面和移动wap页。 开发移动端页面跟开发PC页面的一个大区别就是移动端对响应式布...

    zacklee 评论0 收藏0
  • 移动端适配问题

    摘要:读设备宽度,动态设置标签的属性中的值网易的做法网易的做法现在的设计稿都是宽度的宽,那要想实现样式设计图这种比较方便的折算方式,就要设置成也就是说总结总结是为了实现移动端自适应布局。适配问题 怎么适配iphone6 1px问题 为什么页面与设计稿会出现偏差? dpr=设备像素/ css像素,只有dpr等于1的时候,实际效果和设计稿的尺寸比例才是1:1。 因为iPhone6的DPR(设备像素比)...

    孙淑建 评论0 收藏0
  • 前端培训-初级阶段-场景实战(2019-05-23)-移动端适配bug

    摘要:前端最基础的就是。默认构建一个真实的设置为一个理想值追加到树中获取理想值和实际值的比例计算值进行比例换算移动端适配方案前端培训初级阶段之移动端适配原理参考文献淘宝弹性布局方案实践布局详解移动端自适应方案 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技...

    FingerLiu 评论0 收藏0
  • 前端培训-初级阶段-场景实战(2019-05-23)-移动端适配bug

    摘要:前端最基础的就是。默认构建一个真实的设置为一个理想值追加到树中获取理想值和实际值的比例计算值进行比例换算移动端适配方案前端培训初级阶段之移动端适配原理参考文献淘宝弹性布局方案实践布局详解移动端自适应方案 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技...

    xi4oh4o 评论0 收藏0
  • 前端培训-初级阶段-场景实战(2019-05-23)-移动端适配bug

    摘要:前端最基础的就是。默认构建一个真实的设置为一个理想值追加到树中获取理想值和实际值的比例计算值进行比例换算移动端适配方案前端培训初级阶段之移动端适配原理参考文献淘宝弹性布局方案实践布局详解移动端自适应方案 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技...

    psychola 评论0 收藏0

发表评论

0条评论

Little_XM

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<