h5适配的解决方案
一、 流程
设计师以750pt×1334pt尺寸进行设计(当然高度随内容变化),最后用该尺寸的设计稿进行标注、切图,前端采用淘宝的开源方案flexible进行适配。
二、 flexible使用方法
Flexible的使用方法非常简单,只需要引入flexible_css.js和flexible.js 下载地址
l 第一种方法将文件下载后放入项目中引用(省略写法,大家都懂的)
l 第二种直接使用阿里CDN资源
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js" ></script>
l 第三种直接使用内联的方式将js贴到<head></head>之间(强烈建议)
js执行完成后,会在<html>元素上增加一个data-dpr属性,以及一个font-size样式。Js会根据不容屏幕判断dpr的值(1/2/3),同时给html加上相对应的font-size(例如75px) 。其中dpr是设备的像素比,例如iphone4-6的dpr为2,iphone6p-7p的dpr为3;因为安卓的高清屏太杂乱,flexible未做安卓的高清适配,统一将安卓的dpr设置为1,flexible判断到如果dpr为1且屏幕宽度>540,认定为该手机是安卓高清屏手机,则屏幕宽度恒定设为540px(据统计540px是安卓手机最大的css像素)。
到此,我们页面上的元素都可以通过rem单位来设置,他们会根据<html>元素的font-size做相应计算,从而达到不同屏幕的适配。
- 下面就是如何将px转换成rem:
前面说了,我们是按750px的设计稿进行开发,为了方便换算,flexible将屏幕宽度为750的<html>元素设置font-size为75px,我们将75px称之为rem基准值,针对这份设计稿,我们可以知道 1rem=75px。
这样一来,对于视觉稿上的尺寸换算,只需要将原始px值除以rem基准值,例如视觉稿中179px*150px换算成2.346667rem*2rem。
- 如何快速换算
在实际生产过程中,每次都要计算px转换rem,肯定会觉得非常麻烦,降低生产效率,为了提高效率,建议大家使用Hbuild或sublime开发工具,这两个工具都有自动转换的插件。
以Hbuild为例,右击项目->属性->代码助手设置->启用项目特定的设置->启动px转rem提示

- 字号不使用rem
在不同的屏幕下,我们是不希望看到字号也随屏幕缩放,我们希望在小屏上看清文本,在大屏上看到更多的文本,所以字号还是用px单位设置,以及现在绝大多数的字体是点阵字体,通常是16px和24px,所以不希望出现13px、15px这样的奇葩尺寸。
根据flexible的适配方案,dpr=2时<meta name=”viewport”>initial-scale属性为0.5,dpr=3时<meta name=”viewport”>initial-scale属性为0.3333333333
所以的用[data-dpr]属性来区分不同dpr下的文本字号大小
.detail-line-content{font-size: 12px;}
[data-dpr="2"] .detail-line-content{font-size: 24px;}
[data-dpr="3"] .detail-line-content{font-size: 36px;}
三、总结
flexible是淘宝开源的h5适配方案,手机淘宝从14年开始至今一直在使用,比较稳定,并且在开发过程中不要进行复杂的折算,直接使用设计稿中的尺寸,方便好用。该方法是主流的h5前端开发方案之一,这篇文档是我结合大漠老师写的文档和我的一些开发经验,整理了较为简单的流程,如有错误之处,敬请指正。
四、参考资料
http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html
https://zhuanlan.zhihu.com/p/25422063
h5适配的解决方案的更多相关文章
- 本地图片上传与H5适配知识
最近用到本地图片上传作为API的参数,在网上看了许多,记录一下,以后可能用的着(仅自己记录用,看不清请绕路) function getObjectURL(file) { var url = null ...
- 翻屏类 h5 适配方案:解决宽高自适应难题
表格 图片等 宽度自适应 :width:100%; box-sizing: border-box; 基于淘宝适配方案flexible + 翻屏h5 适配方案adaptive flexible解读及 ...
- 【原】pageResponse - 让H5适配移动设备全家(移动端适配)
上一篇文章<为什么选择iPhone5的分辨率作为H5视觉稿尺寸>最后留下了问题:是否需要视觉设计师设计多套的视觉稿供给前端工程师做页面适配呢?按照自己以前的方法,通常会要求设计师设计2套的 ...
- Chimee - 简单易用的H5视频播放器解决方案
Chimee是由奇舞团开源的一套H5视频播放器解决方案,由奇舞团视频云前端团队结合在业务和视频编解码方向的沉淀积累倾心打造.Chimee支持MP4.M3U8.FLV等多种媒体格式,同时它也帮我们解决了 ...
- 移动端H5适配方法(盒子+图片+文字)
一.怎么让H5页面适应手机 a.利用meta标签 <meta name="viewport" content="width=device-width,initial ...
- 让我为你介绍一个神器:Chimee,一套可扩展的 H5 视频播放器解决方案
Chimee(读"奇米", [tʃɪ'mɪ:])是由奇舞团开源的一套 H5 视频播放器解决方案,由奇舞团视频云前端团队结合在业务和视频编解码方向的沉淀积累倾心打造. Chimee ...
- iPhone X 适配手机端 H5 页面通用解决方案
一:本文提供两种解决方案 1.终端解决方案(最优,建议选择) 2.web解决方案 导语: iPhone X的出现,一方面对于整个手机行业的发展极具创新领头羊的作用,另一方面也对现有业务的页面适配带来了 ...
- EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
之前在进行EasyNVR多屏开发的时候,由于多屏功能不需要在手机端展示出来(pc多播放为RTMP,手机端播放为HLS),因此只注意到了引用videojs来进行rtmp的播放.由于不同项目需求不同,对h ...
- iPhoneX 适配H5页面的解决方案
由于在iPhonex在状态栏增加了24px的高度,对于通栏banner规范的内容区域会有遮挡情况. 解决方案:在页面通栏banner顶部增加一层高度44px的黑色适配层,整个页面往下挪44px,这种做 ...
随机推荐
- es集群数据库~运维相关
一 数据同步方案 1 ES-JDBC 不能实现删除同步操作.MYSQL如果删除,ES不会删除 2 logstash-input-jdbc 能实现insert update,但是仍然不能实现删除 ...
- 生成唯一UUID
目前有多种方式生成的UUID,根据算法,可确定是否唯一,使用IP和MAC自定义生成唯一主键较妥: // 获取MAC地址的方法 private static String getMACAddress(I ...
- spring boot集成websocket实现聊天功能和监控功能
本文参考了这位兄台的文章: https://blog.csdn.net/ffj0721/article/details/82630134 项目源码url: https://github.com/zhz ...
- 015_ICMP专项研究监控
一.数据demo cat /proc/net/snmp Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagr ...
- idea的一些设置
在File->Settings->Appearance & Behavior->System Settings->Updates下取消Automatically che ...
- AngularJS指令基础(一)
AngularJS指令基础(一) 1.什么是指令:粗暴的理解就是,自定义HTML标签.专业理解是指,angularJS扩展具有自定义功能的HTML元素的途径. 2.什么时候用到指令:需求是变化的.多样 ...
- UiAutomator2.0 - 控件实现点击操作原理
目录 一.UiObject 二.UiObject2 穿梭各大技术博客网站,每天都能看到一些的新的技术.突然感觉UiAutomator 2.0相对于现在来说已经是个很久远的东西了ε=(´ο`*))).写 ...
- Qt之excel 操作使用说明
学习背景: 适合熟悉些qt开发,但是不是深入了解的开发者学习.具体实现(qt 5.1版本),office2007 Excel做验证,Win 7(64位),如有讲解有误,欢迎斧正! 一.简单介绍 QAx ...
- JAVA BigDecimal 用法
一.BigDecimal 的加减乘除 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new Big ...
- tp5 修改默认的分页url
默认分页url:xx.com/xxx?page=1 个人主要感觉不美观,想变成xx.com/xxx/list_1.html这样的 框架本身默认使用的boostrap分页类,目录位置 simplewin ...