版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、H5页面适配所有iPhone和安卓机型的六个技巧-25学堂目前,很多 APP 设计师小伙伴已经开始转向 H5 前端开 发啦,但是解决所有 iPhone 和安卓机型的适配问题是我们 的重中之重。 无论是设计 APP 还是写前端 H5. 都是要考虑移 动端的兼容性。25 学堂今天跟大家来回顾一下 H5 页面去适配所有 iPhone 和安卓机型的一些技巧和办法。回归正题,兼容 iphone 各版本机型最佳的方式就是自适应。1、viewport 简单粗暴的方式:<meta name=viewport content=width=320,maximum-scale=1.3,user-scalabl
2、e=n o>直接设置 viewport 为 320px 的 1.3 倍,将页面放大 1.3 倍。 为什么是 1.3 ?目前大部分页面都是以 320px 为基准的布局, 而 iphone6 的 宽度比是 375/320 = 1.171875 ,iphone6+ 则是 414/320 = 1.29375 那么以 1.29 倍也就约等于 1.3 了。2、ip6+ 的 CSS media query media (min-device-width : 375px) and (max-device-width : 667px) and (-webkit-min-device-pixel-ratio
3、 : 2)/*iphone 6*/media (min-device-width : 414px) and(max-device-width : 736px) and (-webkit-min-device-pixel-ratio : 3)/*iphone 6 plus*/PS: 也可以直接使用实际的 device-width :如 device-width : 375px 在原有页面的基础上,再针对相应的屏幕大小单独写样式做 适配。3、REM 布局REM 是 CSS3 新增的一种单位, 并且移动端的支持度很高, android2.x+ ,ios5+ 都支持。 REM 是相对于 dom 结构的
4、根 元素来设置大小,也就是 html 这个元素。相较于 em 单位, rem 使用上更容易理解及运用。REM 与 PX 的换算可以查看网址: 假设, html 我们设置 font-size:12px; 也就是说 12px 相对于 1rem ,那么 18px 也就是 18/12 = 1.5rem 。那么我们以 320px 的设计布局为基准,将 html 设置为 font-size:100px ,即 100px = 1rem 。 (设置 100px 是为了方 便计算 )那么可以将大部分 px 单位除以 100 就可以直接改成 rem 单位了。REM 如何做响应式布局?1、如果仅仅是适配 ip6+
5、设备,那么使用 media query 就行。 伪代码如下:/*320px 布局 */htmlfont-size: 100px;bodyfont-size: 0.14rem /* 实际相当于 14px*/* iphone 6 */media (min-device-width : 375px) and(max-device-width : 667px) and (-webkit-min-device-pixel-ratio : 2)htmlfont-size: 117.1875px;/* iphone6 plus */media (min-device-width : 414px) and(m
6、ax-device-width : 736px) and(-webkit-min-device-pixel-ratio : 3)htmlfont-size: 129.375px;这样,在 ip6 下,也就将页面内的元素放大了 1.17 倍, ip6+ 下也就是放大了 1.29 倍。2、如果是完全自适应,那么可以通过JS 来控制。(function (doc, win) var docEl = doc.documentElement, resizeEvt = orientationchange in window ?orientationchange : resize, recalc = fun
7、ction () var clientWidth = docEl.clientWidth;if (!clientWidth) return;docEl.style.fontSize = 100 * (clientWidth / 320) + px;/ Abort if browser does not support addEventListener if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false);doc.addEventListener(DOMContentLoaded, re
8、calc, false);)(document, window);页面初始化的时候计算 font-size ,然后再绑定 resize 事件。 这种效果就和百分比布局一样了。那么用 REM 做单位与百分比做单位有什么优势? 主要优势在于能更好的控制元素大小。 (一般百分比应用在 布局层,一般常见设置为 50% ,33.3% ,25%之类的整数居 多,难以运用在复杂的页面小部件内) 。但是相比百分比布 局,需要借助 JS 或 media query 实现,略有一点瑕疵。4、图片自适应刚说完 REM 布局,那么用百分比布局也能实现一样的效果, 但是用百分比布局, 必须要面临一个问题: 图片宽度 1
9、00% , 页面加载时会存在高度塌陷的问题。 .如图:页面加载时图片高度默认不存在。那么可以用 padding-top 设置百分比值来实现自适应。 公式如下:padding-top = (Image Height / Image Width) * 100%原理:padding-top值为百分比时,取值是是相对于宽度的。 相关代码实现:<div class=cover><imgsrc=XXXbKXXXXXXXXXXXX_!0-item_pic.jpg_160x160q90.jpg alt=/></div>.coverposition: relative; pa
10、dding-top: 100%; height: 0;overflow: hidden;.cover imgposition: absolute; top: 0; width: 100%;5、图片高清化大家都知道, iphone6 plus 是 3 倍高清图了,它的 devicePixelRatio = 3 。关于 DPR 的介绍可以查看这篇文章 设备像素比devicePixelRatio 简单介绍 在 ios8 下,已经开始支持 img 的 srcset 属性了(目前移动 端也就 ios8 开始支持),也就是说,可以对一张图片设置 2 个 URL ,浏览器自动加载对应的图片。黄色表示仅支持旧
11、的 srcset 规范,绿色表示支持全新的 srcset 规范,包括 sizes 属性, w 描述符。 这里不展开,详 细了解可自行 google 。如下 DEMO ,请切换 devicePixelRatio 值进行查看:不过目前前端这边图片的实现基本都用 lazyload 的方式实现。 srcset 的图片加载方式在实际项目中运用还比较少。6、背景图高清化media query 实现高清化img 标签的高清化, 可以通过 JS 判断 devicePixelRatio 的值 来加载不同尺寸的图片, 但是对于背景图, 写在 CSS 中的, 用 JS 来判断就略麻烦了, 还好 CSS 通过 med
12、ia query 也能 判断 dpr 。目前兼容性最好的背景图高清化实现方式,使用 media query 的 -webkit-min-device-pixel-ratio 做判断:/* 普通显示屏 (设备像素比例小于等于 1) 使用 1 倍的图 */.cssbackground-image: url(img_1x.png);/* 高清显示屏 (设备像素比例大于等于 2)使用 2 倍图 */media only screen and(-webkit-min-device-pixel-ratio:2).cssbackground-image: url(img_2x.png);/* 高清显示屏 (
13、设备像素比例大于等于 3)使用 3 倍图 */ media only screen and(-webkit-min-device-pixel-ratio:3).cssbackground-image: url(img_3x.png);进一步,可以通过工具生成相应的 3x ,2x ,1x 的图片及 css , 在使用时直接引用即可。谁搞一个?关于移动设备的 -webkit-min-device-pixel-ratio 值,可以查 看该网页的整理: image-set 实现高清化image-set ,它是 Webkit 的私有属性,也是 Css4 的一个属 性,它是为了解决 Retina 屏幕下的
14、图像显示而生。使用方式也很简单。伪代码如下:.css background-image: url(1x.png);/* 不支持image-set 的情况下显示 */background: -webkit-image-set( url(1x.png) 1x,/* 支持 image-set 的浏览器的 普通 屏幕 下 */url(2x.png) 2x,/* 支持 image-set 的浏览器的 2 倍 Retina 屏幕 */url(3x.png) 3x/* 支持 image-set 的浏览器的 3 倍 Retina 屏幕 */);目前移动端的支持程度来看, ios7+ , android 4.4
15、+ 下已经 支持了。如果仅仅是做 ip6+ 的高清适配方案。 image-set 也 是一种实现方案。使用 image-set 与 media query 实现有什么区别及好处? 这篇文章里面做了很详细的阐述,大家可以看看: ge-set-to-support-retina-images/大体的意思是: image-set 不需要告诉浏览器使用什么图像, 而是直接提供了图像让浏览器选择。这就意味着,如果在低 网速下,浏览器可以选择加载低分辨率的图片。 (PS :好智 能的样子)但是相比如 media query 的实现, image-set 仅支持单个图 片的高清化,不适合在 css sprite 下使用。 并且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村房产证买卖协议书
- 合同工协议书补充协议
- 印刷合同范本模板模板
- 卖衣服合同补充协议书
- 电影节活动推广方案
- 公司跟合作社合同协议
- 剧院托管运营合同范本
- 修改主合同金额的协议
- 出租结婚大棚合同范本
- 劳动合同书的补充协议
- 工业高质量数据集研究报告 2025 中国工业互联网研究院
- 2025江苏苏州市姑苏区劳动人事争议仲裁院协理员招聘5人考试参考试题及答案解析
- 全面流程审计管理模板
- 2025学年第一学期高一年级10月六校联考英语试题卷
- 医院法律知识培训课件
- 国家电投广西核电社会招聘笔试题库
- 2025年士兵提干考试题及答案
- 湖南九校联盟2026届高三上学期9月第一次联考化学试题+答案
- 《人工智能导论》课件 第4章 人工智能的行业应用
- 2025年河南淯水新城投资集团有限公司及下属子公司招聘17人考试参考试题及答案解析
- 自主维护课件
评论
0/150
提交评论