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,这种做 ...
随机推荐
- 第十五节、OpenCV学习(四)图像平滑与滤波
图像的平滑与滤波 平滑滤波是低频增强的空间域滤波技术,是图像模糊.消除噪声. 一.2D滤波器cv2.filter2D() 对于2D图像可以进行低通或者高通滤波操作,低通滤波(LPF)有利于去噪声,模糊 ...
- 【easy】784. Letter Case Permutation
Examples: Input: S = "a1b2" Output: ["a1b2", "a1B2", "A1b2", ...
- 一、学习起步vue——安装
学习vue第一步:安装 (windows系统) 整个运行的命令: npm -v node -v 查看版本 npm uninstall -g vue-cli 卸载vue-cli npm install ...
- Toad DBA Suite for Oracle 12.6 64-bit Commercial 简单连接
注意:Toad DBA Suite for Oracle 12.6 64-bit Commercial安装包推荐去官网下载,中文版的最好不要使用绿色免安装版,不然连接会报各种错误 1.安装:双击下载好 ...
- python基础--numpy.dot
# *_*coding:utf-8 *_* # athor:auto import numpy dot = numpy.dot([0.100, 0.200],2.) print(dot) #[ 0.2 ...
- Jmeter JDBC Connection Configuration 链接失败,提示Error preloading the connection pool
修改数据配置的连接数即可:修改为小一点 下面是oracle 配置连接的方式
- tcp与ip协议的区别
TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议). 简单地说,就是由底层的IP协议和TCP协议组成的 ...
- jsp中一个标签两种方式绑定两个click事件导致未执行的问题
近日,在开发过程中,写了一个标签 <li id="a1" onclick="doSomething()">...</li> 在js页面中 ...
- webpack 学习小结
webpack 是一个模块打包工具(前提要安装 node使用npm来安装webpack) 1.安装webpack,webpack-cli , webpack-dev-server //全局安装 npm ...
- Celery初识及简单实例
Celery是一个“自带电池”的任务队列.易于使用,可以轻易入门,它遵照最佳实践设计,使产品可以扩展,或与其他语言集成,并且它自带了在生产环境中运行这样一个系统所需的工具和支持.本文介绍基础部分: 选 ...