全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Html 5 屏幕适配解决方案随着移动和HTML5的持续火热,移动市场涌现出了大量基于HTML5开发的移动APP。由于移动市场的高速发展,移动设备的快速更新,使得市场上出现了种类繁多具有各种屏幕尺寸和分辨率的移动设备,开发者在开发HTML5应用时就必须考虑所有屏幕尺寸和分辨率类型的应用场景,为移动应用做屏幕尺寸和分辨率的适配工作。想要为移动应用做屏幕适配首先要了解一些概念。物理像素,即屏幕上的最小显示单元;设备独立像素,即由程序使用的虚拟像素(如CSS中的px);设备像素比,设备像素比 = 物理像素 / 设备独立像素,定义了物理像素与设备独立像素间的对应关系,简称dpr(device pixel ratio)。在不同屏幕上,CSS像素呈现的大小(物理尺寸)是一致的,不同的是一个CSS像素对应的物理像素个数是不同的。举例来讲,普通屏幕的每个像素点与CSS中定义的像素点大小相同,但是苹果的retina屏幕一个CSS像素对应4个物理像素。因此,在开发应用时就需要对不同屏幕(高清和非高清)进行区分处理。就一张普通的图片(PNG、JPG、GIF等)来讲,其最小的数据单元称为位图像素。理论上,一个位图像素对应一个物理像素,这样图片才能完美的清晰展示,但是对于高清屏幕(Retina)就会出现位图像素点不够的情况,这样会导致图片模糊。遇到这种情况,通常要准备两张图片,如一张200300(CSS px),并提供一张400600的高清图片,这样位像素点就是原来的4倍,在retina屏幕下正好与其物理像素点一一对应,图片自然就清晰了。当然,具体要加载那种图片是有dpr来判断的,在JavaScript中,可以通过window.devicePixelRatio获取到当前设备的dpr,在css中,可以通过-webkit-device-pixel-ratio,-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配。与图片问题类似,高清屏幕还存在一种“失真”的问题,即border:1px问题。对于border:1px在所有屏幕中的物理大小其实是相同的(下图灰色区),但这怎能体现出高清呢?对于retina屏幕来说,一个 CSS像素由4个物理像素组成,因此其最细的线条并不是1px,而是0.5px,如下图红色框。而一般情况下设计师想要的retina下border: 1px,其实就是1物理像素宽,这种更细粒度的划分也带来的视觉上的高清。当然,除了高清上的适配,还存在着屏幕大小上的适配,即页面布局问题。目前解决该问题最好用的方案是使用相对单位(rem),主要工作就是针对不同手机屏幕尺寸和dpr动态的改变根节点html的font-size大小(基准值)。rem=document.documentElement.clientWidth * dpr / 10,乘以dpr是因为页面有可能为了实现1px border缩放1/dpr倍(如果没有,dpr=1),除以10是为了取整,方便计算。可以通过JavaScript来实现,使用公式计算出基准值rem,然后写入样式,代码如下:var dpr, rem, scale;var docEl = document.documentElement;var fontEl = document.createElement(style);var metaEl = document.querySelector(metaname=viewport);scale = 1 / dpr;dpr = win.devicePixelRatio | 1;rem = docEl.clientWidth * dpr / 10;/ 设置viewport,进行缩放,达到高清效果metaEl.setAttribute(content, width= + dpr * docEl.clientWidth + ,initial-scale= + scale + ,maximum-scale= + scale + , minimum-scale= + scale + ,user-scalable=no);/ 设置data-dpr属性,留作的css hack之用docEl.setAttribute(data-dpr, dpr);/ 动态写入样式docEl.firstElementChild.appendChild(fontEl);fontEl.innerHTML = htmlfont-size: + rem + px!important;/ 给js调用的,某一dpr下rem和px之间的转换函数window.rem2px = function(v) v = parseFloat(v); return v * rem;window.px2rem: function(v) v = parseFloat(v); return v / rem;window.dpr = dpr;window.rem = rem;那么如何在CSS编码中实现真实布局呢?举例来讲,一个针对iPhone6(rem=375 * 2 / 10 = 75)的高清视觉稿7501334px,采用上面JS代码方案。如果有一块750300px的div,用less这样写:/ 例如: .px2rem(height, 80);rem在iphone6时为75.px2rem(name, px , rem) name: px / rem * 1rem;.px2rem(width, 750);.px2rem(height, 300);转化成HTML就变成了104rem,再经过0.5的缩放,在屏幕中的实际现实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务增长趋势预测方案
- 2026广东江门公用水务环境股份有限公司招聘2人备考题库及1套完整答案详解
- 2026四川大学华西临床医学院、华西医院科研岗、实验技术岗社会招聘备考题库及参考答案详解1套
- 2026云南楚雄州姚安县职业高级中学实验室科研助理 (公益性岗位)招聘1人备考题库及参考答案详解1套
- 2026广东佛山市顺德区公立医院招聘高层次人才48人备考题库含答案详解(考试直接用)
- 2026辽宁沈阳兴远东汽车零部件有限公司招聘2人备考题库含答案详解ab卷
- 2026湖北黄石市文化和旅游局招聘政府雇员2人备考题库含答案详解(培优b卷)
- 中国电子科技集团公司第四十、四十一研究所2026届校园招聘备考题库附答案详解
- 2026宁波东方人力资源服务有限公司招聘编外人员1人备考题库附答案详解(完整版)
- 2026宁夏民族职业技术学院银龄教师招聘20人备考题库及1套完整答案详解
- 基于多技术融合的地铁站冷水机组故障检测与诊断模拟深度探究
- 小学语文场景式教学设计案
- 2025年医院医务人员医药领域腐败问题集中整治廉洁从业承诺书
- DB51∕T 3199-2024 市(州)、县(市、区)标杆政务大厅建设规范
- 珠海市高新区华发开发工程涉输油管道迁改工程项目环境影响报告书
- 立体几何中的截面问题(附答案解析)-全国高考数学一轮复习(提高版)
- 服装面料图案搭配课件
- 2025至2030年中国电子雷管行业市场深度分析及投资策略咨询报告
- 医学教育中的人文关怀与伦理教育融合
- 国家民政部所属单位招聘笔试真题2024
- DB51 T1996-2015四川公路工程超声回弹综合法 检测结构混凝土强度技术规程
评论
0/150
提交评论