移动端web开发基础概念
最近在了解移动端web开发的相关知识,有些概念总是模糊不清,这次花费了一些时间整体的梳理了一遍。
分辨率
分辨率可以从显示分辨率与图像分辨率两个方向来分类。显示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。图像分辨率则是单位英寸中所包含的像素点数,其定义更趋近于分辨率本身的定义。——360百科
显示分辨率指显示器所能显示的像素多少。如iPhone的分辨率:640x960,640x1136等。图像分辨率指单位英寸中所包含的像素点数(PPI)。如下图中PS新建文件的截图。
PPI
PPI所属的上下文环境不同,意义也会不一样。当我们在谈论显示设备的PPI时,它指的是屏幕像素密度;和图片相关时,我们谈论的是打印时的分辨率或打印机的打印精度(在此种情况下,即是上文中提到的图像分辨率)。
在这里我们只关注屏幕像素密度。
让我们再次回到概念,每英寸的像素数量。英寸是长度单位,即它指的是长、宽、对象线每英寸里的像素数量。在1英寸的长度里,像素数量越多,PPI值越大。
PPI有相应的计算公式:PPI=√(X^2+Y^2)/ Z (X:长度像素数;Y:宽度像素数;Z:屏幕尺寸)。
如下图,是苹果6s的部分规格参数,根据公式计算可以得出:PPI=√(1334^2+750^2)/ 4.7=325.6≈326。与苹果提供的参数相符。
在下图中,屏幕分辨率,屏幕尺寸,PPI都是官方给出的数据。可以知道,这三个数据都是固定的值,它只与手机的型号有关。因此,此处的像素应该是设备像素或物理像素。
设备像素和css像素
设备像素
设备像素:定义了我们使用的设备的分辨率,一般来说可以通过screen.width/height来得到屏幕的大小。这个值是固定的,它只与设备有关。
css像素
css像素:又称设备独立像素(DIP),独立于设备的用于逻辑上衡量像素的单位。它的宽度不是一个固定的值。比如在网页上创建一个width:500px;height:500px的div;当默认缩放比为100%的时候,一个css像素对应一个设备像素。当通过浏览器的缩放功能来改变缩放比为200%的时候,一个css像素的宽度等于两个设备像素的宽度。此时div的宽高仍然是500px * 500px。但是一个css像素的大小却等于4个设备像素的大小。
高清显示屏
高清显示屏起源于retina。它是一种由苹果公司设计和委托制造的显示屏。它的特点是,具备足够高的像素密度而使人眼无法分辨其中单独像素点的液晶屏。
如下图,假设屏幕大小为1英寸,左图是普通屏,右图是retina屏,可以看出,右图的像素密度要远大于左图。在常规的缩放比(100%)下,蓝色部分是需要在网页上展示的地方。根据一个css像素对应一个物理像素,可以知道,右图的显示部分视觉上看起来将会特别小。
为了让左右图在视觉上看起来一样,我们需要做的,就是让右边的图的1个css像素等于多个物理像素的大小。即将图片进行了一个放大处理。但是这样做的后果就是图片在视觉上变模糊了。
在移动端开发中,我们常常需要为高清显示屏准备2倍大小的图片,就是为了避免图片放大而发生模糊。
设备像素比devicePixelRatio
devicePixelRatio = 物理像素 / 设备独立像素(css像素)
设备像素比可以用来区分普通显示屏和高清显示屏。devicePixelRatio值在1.5及以上的手机屏幕,是高清显示屏,为1.0为普通屏。
如,iPhone4的物理像素宽度为640px;css像素宽度为320px;可以得出devicePixelRation = 2;可以知道,iPhone4是高清显示屏。
在移动web开发中,为了让retina屏下的图片也可以清晰显示,我们需要给retina屏准备另一套大尺寸的图片,确保图片不会放大而变模糊。我们可以根据devicePixelRatio值来判断应该加载的图片尺寸。
.css{/* 普通显示屏(设备像素比例小于等于1.3)使用1倍的图 */
background-image: url(img_1x.png);
}
@media only screen and (-webkit-min-device-pixel-ratio:1.5){
.css{/* 高清显示屏(设备像素比例大于等于1.5)使用2倍图 */
background-image: url(img_2x.png);
}
}
移动端web开发基础概念的更多相关文章
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 移动端web开发技巧(转)
原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
- 移动端web开发的一些知识点
整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 移动端Web开发注意点
不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ...
- 移动端Web开发如何处理横竖屏
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...
- [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现
Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...
- 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)
一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...
随机推荐
- Web自动化测试工具调研
背景 Web自动化测试越来越被重视, 因为现在Web已经是工程化的状态. 如何通过工具测试, 保证Web开发的质量,提升开发效率,是Web工具的诞生的来由. Web测试分为以下几个方面: 1. 界面测 ...
- xl2tp部署
参考 http://blog.51yip.com/linux/1795.html 说到VPN,就会想到google,满心的疼.以前写过一篇关于vpn的文单,请参考:centos5.5 vpn 安装配置 ...
- IE中cookie问题,带下划线的前置域名会不给设cookie,谷歌和火狐浏览器则不受影响
!! WARNING !!: Server hostname contains an underscore and this response sets a cookie. Internet Expl ...
- tomcat在linux中启动慢的解决方案
有两种解决办法: 1)在Tomcat环境中解决 可以通过配置JRE使用非阻塞的Entropy Source. 在catalina.sh中加入这么一行:-Djava.security.egd=file: ...
- JAVA:通过poi读取excel
POI是一个apache开源的jar包,可以通过搜索 java POI找到官网,并下载开发包. 包含的功能: 可以读取excel2003,2007,2010等. 读取excel2007/2010的代码 ...
- Jquery操作select,左右移动,双击移动 取到所有option的值
$(function () { function MoveItem(fromId, toId) { $("#" + fromId + " option:selected& ...
- 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏.第二部分是D语言最基本的规定,第 ...
- CentOs下安装maven
现有的一个项目使用了Maven来管理,源代码放到了Subversion中.虽然Maven管理项目很方便,但是部署起来还是很麻烦的.先要在本地生成项目jar包,上传到服务器,然后再重启服务.如果在服务器 ...
- eclipse for java developer和eclipse for java ee developer的区别
eclipse是基于插件机制的软件,插件本身是不能启动和操作的,它们需要一个环境,eclipse使用osgi r4规范实现了这个环境. osgi是java动态模块化的规范,该规范不光要让java程序模 ...
- .NET委托和事件
.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string ...