EXCELL格式

1 csv格式导出来之后不能用EXCELL打开,会乱码。用记事本打开,然后将“(英文的引号出掉),就可以了。

关于二倍图的操作

概念:

设备像素:也叫物理像素,显示设备上最微小的物理部件。 比如 iphone 5:640 x 1136px. 不同的机型有不同的设备像素,固定死的

这里需要讲一下显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。

  • 高分辨率屏幕:在 Windows 系统下,提高屏幕分辨率一般都是通过提高屏幕尺寸。而随着屏幕分辨率的提升,图像和文字显示目标会相应缩小,造成观看极其不便。

    Retina为什么那么小的屏幕会有那么大的分辨率。为什么那么大的分辨率,非但没有使得文字和图像变小,反而更加清晰了呢?

  • 高像素密度屏幕:高ppi, 以评估的 Retina 视网膜屏幕为例,它并不是像普通显示器那样通过增大尺寸来增加分辨率,而是靠提升单位面积屏幕的像素数量,即像素密度来提升分辨率,这样就有了高像素密度屏幕。并且mac采用了矢量字体。

CSS像素: css pixel。抽象概念,设备无关像素。DIPS,device-independent像素。在标准情况下一个CSS像素对应一个设备像素。

body{
width:2px;
height:2px;
}

我们来对比一下这两者的不同



使用css画了一个2 x 2px的盒子,在普通设备屏幕下是2 x 2px的设备像素。但是在Retina的屏幕下去使用了4 x 4px的设备像素。

device-pixel-ratio:在JS中叫做window.devicePixelRatio

公式: window.devicePixelRatio = 设备像素/css像素。这样,非视网膜屏幕的iphone上,屏幕物理像素320像素,独立像素也是320像素,因此window.devicePixelRatio等于1.

但是在视网膜屏幕的iphone上,屏幕物理像素640像素,独立像素还是320像素,因此,window.devicePixelRatio等于2.

屏幕密度: ppi :每英寸有多少的像素。视网膜屏幕:将960*640的分辨率压缩在,一个3.5英寸的显示屏内。也就是说,该屏幕的像素密度达到326像素/英寸(ppi)。当ppi>300的时候肉眼就无法分辨分辨率了。

![image](http://oanjd4byj.bkt.clouddn.com/pix%E5%85%AC%E5%BC%8F%E5%9B%BE%E7%89%87.png)

为什么需要两倍图/多倍图

1 对于位图而言:

  • 当一个光栅图像在标准设备下全屏显示时,一位图像素对应的就是一设备像素,导致一个完全保真的显示。因为一个位置像素不能进一步分裂,
  • 当在Retina屏幕下时,他要放大四倍来保持相同的物理像素的大小,这样就会丢失很多细节,造成失真的情形。换句话说,每一位图像素被乘以四填补相同的物理表面在视网膜屏幕下显示。

工作原理:

方法一:

利用css样式以及放两倍图。

有一张200x200像素的图片(CSS像素,也就是普通像素点或者说是标准像素点),我们给图片设置一个CSS样式:

img{
width:200px;
height:200px;
}

图片模糊的情况:固定好css像素。将width和height固定好。此时在这个width和height 对于不同的显示器包含的像素已经确定了。然后在两种不同屏幕上放图片:那么Ritina屏幕图片会模糊。因为没有css像素的width height所对应Retina显示器的像素数那么多。你硬生生的把这张图片拉成那么大。必然模糊。

在iPad2或Mini iPad中就是很正常显示的图片;但是,在New iPad中,1个CSS像素点实际上有4个位图像素点,1个分成4个,显然不够分啊,只能颜色近似选取,于是,图片感觉就是模糊的。

因此,要想让视网膜屏幕下的图片高清晰显示,我们需要的图片的原始大小不能是200×200像素,而需要2倍高宽,即400×400像素,CSS像素限制依然是:

img {
width:200px;
height:200px;
}

此时,视网膜屏幕下图片就显示OK了(非视网膜屏幕图片被压缩-减少像素取样——资源浪费!)。

方法二:

查询像素密度:准备两种大小但是一样的图片。利用css的媒体查询或者JS的 Retina.js来调取图片。(浏览器支持是一个问题)

1 css:

可以通过“device-pixel-ratio”属性或者其扩展属性“min-device-pixel-ratio”和“max-device-pixel-ratio”。这几个Media Queries可以使用background-image为Retina准备高精密度像素的图片。

.icon {
background-image: url(example.png);
background-size: 200px 300px;
height: 300px;
width: 200px;
} @media only screen and (-Webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icon {
background-image: url(example@2x.png);
}
}

2 js:

Retina.js 来处理。

方法三:

放缩放的矢量图形(浏览器支持是一个问题)

获得设备像素比后,便可得知设备像素与CSS像素之间的比例。也就是window.devicePixelRatio。

一倍图:当这个比率为1:1时,使用1个设备像素显示1个CSS像素。

二倍图:当这个比率为2:1时,使用4个设备像素显示1个CSS像素,

三倍图:当这个比率为3:1时,使用9(3*3)个设备像素显示1个CSS像素。

前端二倍图的思考(涉及Retina)的更多相关文章

  1. Retina 屏幕与二倍图

    分辨率 屏幕分辨率:指屏幕可显示的像素的个数 图像分辨率:位图图像包含的像素的个数 对于 Retina 屏它的分辨率是传统屏的两倍,而屏幕大小没有变化,所以它需要的图片的分辨率应该是传统屏幕的两倍(甚 ...

  2. 如何在普清的屏上调试CSS样式二倍图背景

    背景: 最近就遇到一个同事的项目,还是像平常一样小心切图,认真对像素. 一切测试都没有问题,顺利上线. 但是,上线之后,产品经理跑过来说,有BUG. BUG描述:(不认为是BUG) 前端页面上的图标是 ...

  3. iphone关于单倍图和二倍图(导航 背景 变高)

    同学们and朋友们大家好!今天我想说一下关于@2x二倍图的知识,以我所知所见所闻来讲述我的理解! 别看关于这么点小知识,有很多初学者在这个上面常会犯错误,以下是我的理解: 用二倍图是为了适配iphon ...

  4. 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

    尽管我并非艺术出生,既没有任何设计基础,又没有较高艺术涵养,也深谙在短时间内创造一定艺术造诣并非易事,但是既然当初选择从事网站前端开发,我的目光不能仅停留在前端代码上.作为一名志向在前端领域发展的人员 ...

  5. 移动端(视口(meta),像素比,二倍图(图片,背景图,精灵图),css初始化(normalize.css),特殊样式,常见屏幕尺寸)

    1. 视口:(布局视口(layout viewport),视觉视口(visual viewport),理想视口(ideal viewport)) meta 视口标签 <meta  name = ...

  6. 用一篇文章了解ppi,dpr,物理像素,逻辑像素,以及二倍图

    这篇文章能让你了解到什么是分辨率.dpr.dip.ppi (dpi相当于ppi,dpi用点表示物理像素密度,ppi是逻辑像素密度) 首先从最简单的ppi开始: 一部手机,有大有小,怎么知道手机的大小用 ...

  7. 腾讯IVWEB前端工程化工具feflow思考与实践

    本篇文章主要介绍腾讯IVWEB团队从0到1在工程化的思考和实践.feflow的全称是Front-end flow(前端工作流),致力于提升研发效率和规范的工程化解决方案.愿景是通过feflow,可以使 ...

  8. OnlineJudgeFE之前端二次开发

    之前我们在这篇文章青岛大学开源OJ平台搭建 讲了关于它的安装和部署. 今天我们讨论如何对其进行二次开发.首先谈谈前端的二次开发. 如果想要对青岛大学的OJ项目进行二次开发,目前我觉得要满足这么几个要求 ...

  9. 项目需求会__前端er定位的思考~

    一.页面展示-----针对前端部分:后台的东西(功能.样式)不考虑! 二.动态效果------能不能实现! 三.接口数据------怎么传数据! 四.兼容性--------兼容到哪个版本浏览器! 五. ...

随机推荐

  1. Node.JS实战34:远程屏幕监控?可以的

    是否想做一个远程系统屏幕监控功能?这是个有意思的功能. Node.JS可以实现,而且很方便. 目标效果: 在网页中实时查看系统屏幕内容. 实现原理: 1.用express实现服务器: 2.当访问来临时 ...

  2. mysql 可重复读

    概念 Repeatable Read(可重复读):即:事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容. 实现原理(MVCC [ 多版本并发控制 ...

  3. (六:NIO系列) 相关设计模式

    出处:  反应器模式 vs 观察者模式  反应器模式 vs 生产者消费者模式 反应器模式 vs 观察者模式 反应器模式 是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式.当请求抵达 ...

  4. 基于 Python 的自定义分页组件

    基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...

  5. SQL中的like '%%‘查询

    一,我们正常使用like时,这是有两个条件的模糊查询 select *From Test where UserName like '%m%' and UserName like '%a%' 二,但这时 ...

  6. 16、前端知识点--Object.defineProperty 的用法+双向数据绑定原理解析

    一.Object.defineProperty 的用法 Object.defineProperty 可以用于给对象添加更新属性. <script> // Object.defineProp ...

  7. spark浅谈(1):RDD

    一.弹性分布式数据集 1.弹性分布式数据集(RDD)是spark数据结构的基础.它是一个不可变的分布式对象的集合,RDD中的每个数据集都被划分为一个个逻辑分区,每个分区可以在集群上的不同节点上进行计算 ...

  8. Python的五大数据类型的作用、定义方式、使用方法

    一.简述Python的五大数据类型的作用.定义方式.使用方法: 1. 数字类型int: 1.整形 作用:可以表示人的年龄,身份证号码,身高和体重等 定义方式:  weight = 130 print( ...

  9. postman断言

    较旧的写作邮差测试风格 较旧的Postman测试编写风格依赖于特殊tests对象的设置值.您可以为对象中的元素设置描述性键,然后说明它是真还是假.例如,tests["Body contain ...

  10. openstack stein部署手册 10. horzion

    # 安装程序包 yum install -y openstack-dashboard # 变更配置文件 /etc/openstack-dashboard/local_settings 变更以下 OPE ...