我正在参加「掘金·启航计划」
移动端适配作为前端程序员日常开发中经常会遇到的一个问题,如何设置元素的尺寸才能保证在不同设备中呈现相同的页面样式是我们进行页面开发时需要考虑的因素。
因此,今天就想和大家来聊聊移动端适配常见解决方案。
移动端适配是指针对不同的移动设备,根据其屏幕尺寸、分辨率、像素密度等因素,调整和优化网站或应用程序的布局、字体、图片等元素,以使其在移动设备上呈现良好的用户体验。
需要进行移动端适配的根本原因是: 移动端设备的物理像素≠CSS像素
随着CSS3在不同设备上的兼容性得到很好的支持,viewport也逐渐成为移动端适配的首选方案!
viewport是CSS3中新增的视口单位,包含vw和vh两个部分。其中vw是相对于视口宽度的百分比,vh是相对于视口高度的百分比。
1vw代表的含义是占视口宽度的百分之一,1vh代表的含义是占视口高度的百分之一。
(视口: 网页内容在浏览器窗口中显示的区域)
使用vw单位可以让页面元素相对于视口的宽度进行自适应布局,从而在不同的设备上显示效果比较稳定和一致。
因此相比于rem、em这些需要根据根元素或父元素来决定元素实际宽高度的适配方案来说,viewport是从根本上解决了适配问题。
与此同时,为了使开发人员在页面开发中把注意力更多的放在页面还原上,不要在css单位转换上耗费过多的精力,我们可以借助scss和less来编写一个统一的单位换算函数,然后在具体的scss、less等页面css文件中引用使用:
// styles.scss @function px2vw($size){ @return #($size / 设计稿的宽度 * 100)vw } // index.scss @import './components/common/styles.scss'; .container { width: px2vw(18); // 这里的18就是设计稿中以px为单位的元素宽度 }
以尺寸为750px的设计稿为例:
100vw = 750px,
那么75px = (75px / 750px) * 100vw = 10vw
在我们进行页面还原时,只需要按照设计稿中的px单位进行页面的实现,单位转换的事情交给px2vw函数就可以啦~
这其实也是postcss-px-to-viewport插件的核心原理!
2. rem在viewport视口单位没有普及之前,rem一直是移动端适配的优选方案。
rem是一种相对长度单位,它相对于根元素(即html元素)的字体大小来计算当前元素的实际大小。
html{ font-size: 16px; }
一般来说,为了良好的用户体验,大多数浏览器的默认字号都为16px,那么1rem = 16px。
在平常的开发中,我们也可以通过px2rem函数来统一设置单位转换,从而提高编程效率:
// styles.scss @function px2rem($size){ @return #($size / 根元素大小 )rem } // index.scss @import './components/common/styles.scss'; .container { width: px2rem(32); // 这里的32就是设计稿中以px为单位的元素宽度 }
相比于viewport来说,因为rem是依赖于html根元素的,如果不同设备设置了不一样的根元素大小,可能会使页面布局呈现出意料之外的效果。
3. media媒体查询(不推荐)除了vw和rem这两种方式外,我们也可以借助 @media媒体查询来适配不同的设备。
简而言之,@media媒体查询实现移动端适配是通过给不同尺寸的设备定制不同的样式。
示例代码如下:
@media only screen and (min-width: 375px) { .logo { width : 62.5px; } } @media only screen and (min-width: 360px) { .logo { width : 60px; } } @media only screen and (min-width: 320px) { .logo { width : 53.3333px; } }
可以发现,采用 @media媒体查询来适配移动端存在以下几个问题:
因此,对于不需要特殊处理的设备,并不推荐采用@media媒体查询的方式进行页面适配~
移动端适配是前端程序员日常开发中经常会遇到的一个问题,其实不止移动端,对于web端来说,很多时候也需要进行适配操作。
随着前端技术的飞速发展,社区里很多优秀的前辈为我们封装了适配的插件,比如: postcss-px-to-viewport 、 postcss-px2rem...
这些插件的出现使得我们在页面实现上,只需要专注于页面还原,单位直接采用px就完全可以,但是了解其背后的实现原理,才有助于我们的成长!
相关知识
移动端
【移动开发】详细介绍
如何从零高效的开发一款适配 Android 和 iOS 的移动端App
手机移动端快速开发
移动Web实训DAY
一款移动APP开发需要花多少时间和精力?
HTML Meta标签中的viewport属性含义及设置
前端最常用的移动App开发方式及技术栈详解
软件工程移动应用开发是干什么的 – PingCode
移动应用开发
网址: 移动端适配常见解决方案移动端适配作为前端程序员日常开发中经常会遇到的一个问题,如何设置元素的尺寸才能保证在不同设备中呈现 https://m.huajiangbk.com/newsview948655.html
上一篇: vue3.0项目中运用vant的 |
下一篇: 大厂是怎么做移动端适配的?(收藏 |