了解移动web像素的知识,主要是为了切图时心中有数。本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关知识。

一、前置知识

1、 iphone5的相关参数

iPhone 5
处理器
苹果A6处理器,1.3Ghz
屏幕
四英寸1136 × 640 Retina Display
主摄像头
800万像素
前置摄像头
120万像素
闪存
16GB 32GB 64GB
机身
前钢化玻璃面板,后混合面板+金属边框
手机尺寸 123.8×58.6×7.6mm
网络支持
2G:GSM 850/900/1800/1900
  3G:CDMA EV-DO rev.A
WCDMA 850/900/1900/2100
中国移动2G 中国联通2G/3G/4G(美版v版支持电信3G)

2、勾股定理:直角三角形,2直角边的平方和等于斜边的平方!

二、像素相关名词和名词之间的关系

1、px,dp和dpr

px:css pixels 逻辑像素,浏览器使用的抽象单位【切图用逻辑像素】

dp:device independent pixels 设备无关像素,即物理像素  【设备厂商会提供物理像素】

dpr:devicePixelRatio设备像素缩放比 【处理物理像素和逻辑像素的关系,具体换算关系后面再讲】

2、DPI和PPI

DPI:打印机每英寸可以喷的墨汁点(印刷行业)

PPI:即Pixels per inch,屏幕每英寸的像素数量,即单位英寸内的像素密度

在计算机显示设备参数描述上,二者意思一致。

PPI越高,像素数越高,图像越清晰

2.1PPI和默认缩放比DPR的关系

Retina屏(高清屏):dpr都是大于等于2

由对应关系可以看出,PPI越高,系统默认设置缩放比越大,可视度越低(小)。

2.2计算iphone5的PPI

由前置知识能得知iphone5的像素信息:四英寸1136 × 640 Retina Display

首先根据勾股定理计算出iphone5手机屏幕的对角线等效像素,然后除以对角线(4英寸),就得到PPI为326.

注意一点:计算时用的是物理像素,而不是px。

根据3.1的对应关系,可知iphone5的ppi为326对应的屏幕缩放比dpr为2

2.3通过window获取设备的dpr【update20161125】

在移动端浏览器中及某些桌面浏览器中,window对象有一个devicePixelRatio属性,我们可以通过window.devicePixelRatio直接获取到设备的dpr。

3、dpx表示px和物理像素dp的关系

我们已经知道iphone5的dpr为2,给出一个像素在iphone5中的形象图如下:

这个图可以从2个角度理解

  • 平面上:1px等于2的平方*dp
  • 横向维度或者竖向维度上:1px等于2*dp

3.1计算iphone5的逻辑像素

由前置知识能得知iphone5的像素信息:四英寸1136 × 640 Retina Display

现在也已经知道iphone5的dpx为2,再根据上面的计算公式可以算出针对iphone5切图时其逻辑像素为:320px*568px。

4、由设备分辨率得到屏幕分辨率

整个关系串联起来如下:

参考:http://www.imooc.com/u/2022616/courses?sort=publish

扩展阅读:

设备像素比devicePixelRatio简单介绍(张鑫旭)

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/5443445.html有问题欢迎与我讨论,共同进步。

移动WEB像素相关知识的更多相关文章

  1. 移动WEB viewport 相关知识

    了解移动web viewport的知识,主要是为了切图时心中有数.本文主要围绕一个问题:切图时怎样设置<meta name="viewport">相关参数?围绕这个问题 ...

  2. Web缓存相关知识整理

    一.前言  工作上遇到一个这样的需求,一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面.用到了HTML5 的本地存储 API 中的 localStorage作为解决方案,回顾了 ...

  3. web聊天相关知识

    http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...

  4. web.xml相关知识摘录整理

    web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人 ...

  5. 了解Web的相关知识

    一.WWW基础 WWW(world wide web, 万维网)是Internet上基于客户端/服务器体系结构的分布式多平台的超文本超媒体信息服务系统.它利用超文本(hypertext).超媒体(hy ...

  6. WEB的相关知识总结

    JS-->OOP/Module, DOM, JSON, AJAX------------------><script>, script.js的内容 HTML/JS/CSS HT ...

  7. WEB相关知识和Tomcat服务器

    WEB相关知识 1.Internet上供外界访问的Web资源分为: 静态web资源:指web页面中供人们浏览的数据始终是不变的. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间 ...

  8. web跨域及cookie相关知识总结

    原文:web跨域及cookie相关知识总结   之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助. 本篇主要 ...

  9. web前端基础知识及快速入门指南

    web前端基础知识及快速入门指南 做前端开发有几个月了,虽然说是几个月,但是中间断断续续的上课.考试以及其它杂七杂八的事情,到现在居然一直感觉自己虽然很多前端的知识很眼熟,却也感觉自己貌似也知识在门口 ...

随机推荐

  1. 广州的小伙伴福利-由微软组织的在广州SQL Server线下活动

    请按照如下格式报名.

  2. Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值

    Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...

  3. c 进程间的通信

    在上篇讲解了如何创建和调用进程 c 进程和系统调用 这篇文章就专门讲讲进程通信的问题 先来看一段下边的代码,这段代码的作用是根据关键字调用一个Python程序来检索RSS源,然后打开那个URL #in ...

  4. Linux内核启动过程概述

    版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...

  5. 深入浅出数据仓库中SQL性能优化之Hive篇

    转自:http://www.csdn.net/article/2015-01-13/2823530 一个Hive查询生成多个Map Reduce Job,一个Map Reduce Job又有Map,R ...

  6. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  7. TeamCity : Build 基本配置

    前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...

  8. 数据库进阶之路(五) - MySQL行锁深入研究

    由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统:假设id=1的这本书库存为1,但是有2个人同时来借这本书,此处的逻辑为: ; --如果restnum大于0,执行u ...

  9. 创建或打开解决方案时提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案

    提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案: 1.检查是否有C:\Program Files (x86)\d ...

  10. 学习Redis你必须了解的数据结构——JS实现集合和ECMA6集合

    集合类似于数组,但是集合中的元素是唯一的,没有重复值的.就像你学高中数学的概念一样,集合还可以做很多比如,并集,交集,差集的计算.在ECMA6之前,JavaScript没有提供原生的Set类,所以只能 ...