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 条评论
登录 后参与评论

相关文章

来自专栏Keegan小钢

App架构设计经验谈:技术选型

当你做架构设计时,必然会面临技术选型的抉择,不同的技术方案,架构也可能完全不同。有哪些技术选型需要做决策呢?比如,App是纯原生开发,还是Web App,抑或H...

521
来自专栏web前端教室

周末浅谈-WEB前端组件

image.png 随着前端业务复杂化的不断加深,前端交互流程也愈加复杂,所以angularJs,vueJs,avalonJs等许多前端框架都出现了,它们不像J...

1735
来自专栏程序员的知识天地

2018前端工程师成长路线图

成为前端工程师,第一步应该是学习HTML/CSS/JavaScript,这是基础。

802
来自专栏玩转全栈

如何愉快的使用mpvue开发小程序

首先mpvue是基于vue实现的一套能够在微信小程序上跑起来的框架。因此,如果你开始准备使用mpvue开发小程序,而且,如果你恰好有vue开发的经验,那么可以略...

68621
来自专栏phodal

「微信小程序」剖析(二):框架原理 | 在桌面浏览器上运行的尝试

本来想的是昨天晚上写这篇文章的,后来昨天在写一个Cordova上的iOS插件的时候各种不顺。对接的第三方SDK不给力,于是六点多回到家的时候,我就就开始娱乐了...

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

前端学习

前端主要包括 HTML,CSS,JavaScript。开始的时候,可以看熟悉下基本概念

764
来自专栏菩提树下的杨过

Web开发感悟:数据绑定是一种技术,更是一门艺术

1、前言 作为一个多年从事b/s开发的程序猿,曾先后使用过asp、asp.net做为主要服务端语言。不管是相对低级的asp也好,还是高级的asp.net也罢,都...

1825
来自专栏前端迷

React 还是 Vue: 你应该选择哪一个Web前端框架?

2016年,React在Web端和移动端都实现了迅速的成长,稳稳地领先于其主要竞争对手Augular,巩固了其作为前端框架之王的地位。

872
来自专栏大数据文摘

初学指南| 用Python进行网页抓取

2705
来自专栏编程微刊

js仿通知栏新消息实时推送更新效果

在最近的项目里面,用到websocket做消息推送,其中有这样的一个效果,在消息列表的模块,接收到很多条信息,展示在界面的是最近的十条接受到的消息,实时更新模块...

803

扫码关注云+社区