pageResponse - 移动端适配框架

HTML5学堂:移动端布局一直都是一个问题,各种各样的分辨率使得移动端的布局需要耗费大量的时间。今天介绍一个框架pageResponse.js可以让页面在各种分辨率手机下都能完全不走样。

通常移动端的布局方式

1、rem布局,通过动态设置根目录下的font-size达到元素大小“自适应”,通常和百分比布局一起使用

2、固定像素设固定视口宽度。

3、最费事的media query,根据设备视口宽度不同设置不同的样式,换句话说一个页面有多套样式。可以说是正宗的响应式布局。

常规的做法带来的苦恼

常规的这些做法总有一些缺陷是令人遗憾的:

1、rem和百分比布局,这种布局rem终归也是有极限的,当屏幕比较大时,页面元素就开始变得有那么一些不协调了。

2、设置固定的视口使用固定像素来做,那么问题又来了,假如你设置的是640px,那么就意味着最大在640的设备下能显示正常,一旦超出640的设备,就会出现一些地方布局出问题了,最关键还是存在一些兼容性的问题,安卓部分手机能够下滑,而实际下面根本没有任何东西,html的高度莫名其妙的多了很多。

3、media query,正常的来说这种做法是最好的,然而遗憾的是,它会大大增加UI的工作量,同时也大大增加你的工作量,因此不是哥不想用你,是哥真的没办法大量的用你啊。

另辟蹊径

在学习viewport的时候,我们就知道里面有scale这么个东西,有的时候就会想按比例缩放整个页面不就可以了?没错,今天我们要介绍的pageResponse其实就是通过缩放页面比例实现的,然而它修改的并不是viewport的scale而是利用CSS3 transform的scale属性,去缩放整个页面。

如何使用

pageResponse提供了三种模式:auto || contain || cover

auto模式下只对页面进行简单的比例缩放。

contain模式下会居中处理页面,使内容整屏显示。

cover模式下会将超出部分因此处理。

首先记得给页面加上viewport

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

再给页面加一个container,最后配置js即可:

// 使用方法
window.onload = window.onresize = function(){
    pageResponse({
        selector : '输入类名', //模块的类名(container的类名)
        mode : 'contain', // 选择模式 auto || contain || cover
        width : '320', //设计图的宽320px
        height : '504', //设计图的高504px
        origin : 'center center 0' //缩放中心点,可选,在contain和cover模式下无效,默认为"left top 0"
    })
}

有兴趣的可以看看源码,会发现其实也就是在捣鼓比例关系的问题,完全就是一个简单的数学问题。所以这里就不分析源码了。

通过这个框架关于比例失真的问题全部迎刃而解,然而解决一个问题的同时也会暴露出其他的问题,这个框架达到的效果会是你想要的效果吗?用户体验是你想要的吗?

结束语

移动端有很多做法,对于我来说之前提到的三种常用的方法我都用过,而他们经常是结合着用,单独的存在往往不能够满足需求,就拿一个简单的例子来说

main

footer

竖屏的时候你希望footer在底部,假如横屏的时候main区域已经占满屏幕了,这时候如果还按照原来的比例进行缩放,用户会划过相当长的一部分空内容区域然后再到达footer,这样用户体验非常不好,于是你需要合理的利用media query去调整横屏时footer的位置。移动端看似简单,布局上却有非常多的细节问题。因此多学多思考,学如逆水行舟,不进则退。希望大家能多对比多思考,方法总有优缺点,懂得如何互助互补才是关键。

案例和资源

详细案例和js下载,可查看文章——>pageResponse - 让H5适配移动设备全家,小编在书写本文时也查看了这篇文章,感觉还是可以的,也很感谢该作者的分享。

本文章共耗时4小时,责任小编:HTML5学堂-其其。

欢迎沟通交流~HTML5学堂

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-01-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏守候书阁

移动web开发问题和优化小结

到目前为止,互联网行业里,手机越来越智能化,移动端占有的比例越来越高,尤其实在电商,新闻,广告,游戏领域。用户要求越来越高,网站功能越来越好,效果越来越炫酷,这...

1102
来自专栏HBStream流媒体与音视频技术

极度偷懒 - 实现算命程序中tabcontrol的“美化”

3678
来自专栏无原型不设计

在Mockplus中,如何做鼠标悬停时菜单下拉的效果?

了解Mockplus的用户会知道,该原型工具目前并不直接支持鼠标悬停功能。但我经过尝试,发现想用它实现一个鼠标悬停事件并不是什么难事,比如网页设计中很常见的鼠...

3126
来自专栏九彩拼盘的叨叨叨

学习纲要:常用样式

ps: 学习目标看着很少,但学习目标的第一点有很多要学的。目前写的比较粗,以后我会细化。

652
来自专栏HTML5学堂

DIV+CSS布局和TABLE布局的优缺点

HTML5学堂:TABLE布局是早以前CSS不存在的时候兴起的,是对TABLE标签的不正规使用,Table标签就是表格,是用来显示数据的,而不是用来布局网页的,...

3189
来自专栏前端杂货铺

reflow和repaint(摘录自张鑫旭的翻译)

//正文开始 关于回流(reflows)与重绘(repaints),我已经在twitter和delicious上发布,但是并没有在演讲中提到或是以文章形式发布。...

3314
来自专栏Guangdong Qi

iOS 图标图像 (官方翻译版)

2054
来自专栏星流全栈

相见恨晚的JavaScript包搜索工具 — JS.coach

2722
来自专栏互联网杂技

H5动画开发快车道

前言 以往做一些H5的运营项目,都是动画设计师使用Animate cc(原来的Flash)先设计好动画原型,然后交给我们UI开发来实现。做过动画开发的童鞋都知道...

5418
来自专栏Java架构师历程

介绍几个移动web app开发框架

jQuery Mobile框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面。jQuery Mobile最新版本是1.4.0,默认主题采用扁平化...

3762

扫码关注云+社区