移动端适配方案

适配:顾名思义,在不同尺寸的手机设备上,页面相对性的达到合理的展示(自适应)或者“保持统一效果的等比缩放”

适配应关注的要素是那些?

关注点: 字体,高宽间距,图像(图标,图片)
对应图像,一般比较通用方便的方式是:利用css将图像限定在元素内(img图片用max-width:100%,背景图片使用background-size),布局只针对元素进行。

第一种方案:固定高度,宽度自适应

这是一种比较通用的方法,属于自适应布局,viewport width设置为device width,以较小宽度的视觉稿作为参照来布局。垂直方向的高度和间距使用定值,水平方向混合使用定值和百分比或者是弹性布局,最终达到“当手机屏幕发生变化时,横向拉伸或者填补空白的效果”,图像元素根据容器情况,使用定值或者是background-size缩放。
要点:

  • 以小宽度作为参照是因为如果布局满足了小宽度的摆放,当屏幕变宽时,简单的填充空白就可以了。放过来则样式就可能会错乱。
  • 需要小宽度的布局,又需要大宽度的图像,这是一个矛盾点
  • 320px过于窄小,不利于页面设计,只能设计横向拉伸的元素布局,存在很多局限性。
  • 兼容性好。

第二种方案: 固定宽度,viewport缩放

视觉稿,页面宽度,viewport width 使用统一宽度,利用浏览器自身缩放完成适配。页面样式(包括图像元素)完全按照视觉稿的尺寸,使用定值(px,em)就可以完成。
优点:

  • 开发简单 缩放完全交给浏览器,完全按照视觉稿切图
  • 还原精确 绝对等比缩放,可以精确还原视觉稿(不考虑清晰度的情况下)
  • 测试方便 在pc端就可以完成绝大部分的测试,手机端只需酌情调整一些细节

存在的问题:

  • 像素丢失 对于一些分辨率较低的手机,可能设备像素还未达到指定的viewport宽度,此时屏幕宽度渲染可能就不准确了。
  • 缩放失效 某些安卓机不能正确根据meta标签中的width 的值来缩放viewport ,需要配合initial-scale

第三个方案: 利用rem布局

依照某个特定宽度设定rem值(即html 的 font-size)页面任何需要弹性适配的元素,尺寸均换算为rem来布局;当页面渲染的时候,根据页面有效宽度进行计算,调整rem的大小,动态缩放以达到设配效果。利用该方案,还可以根据devicepixelRatio设定inital-scale来放大viewport,使得页面按照物理像素渲染,提高清晰度。

优点:

  • 清晰度高,能达到物理像素的清晰度
  • 能解决dpr引起的1像素的问题。
  • 向后兼容好,即便屏幕宽度增加,ppi增加该方案依旧适用。
    缺点:
  • 适配js需尽早引入,避免或减少viewport变化引起的重绘。
  • 某些安卓机会丢掉rem小数部分
  • 需要预编译库进行单位转换
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • h5的移动端适配核心的问题有两个: 1.因为目前手机品牌众多,手机的宽度不统一,所以第一个问题就是如何让不同的手机...
    国服阅读 3,359评论 0 2
  • 方案一: 最新方案:(隆重推荐) 1、下载MateHandler.js,并引入页面2、head里加入 3、设置bo...
    晨光2016阅读 925评论 0 0
  • 刚开始做移动端web开发的同学应该都碰到过页面适配问题,为什么我在开发手机上调试好的页面在其他手机会有这样或那样的...
    留七七阅读 19,547评论 5 80
  • 需要移动端适配的根本原因:屏幕窗口的大小,devicepixelratio值等。 简单介绍下devicepixel...
    2ue阅读 1,498评论 0 2
  • 在移动互联网快速发展的今天,手机的种类和尺寸越来越多,作为前端的小伙伴们可能会越来越头疼,但又不得不去适配一款又一...
    keenjaan阅读 26,942评论 9 86