像素 && ppi

首先先说一下pixel(picture element),显示图像的最小单位,有多个带色彩的像素点组成的整体就是一张图像。然后再说一下ppi(pixel per inch)这个概念,其实就是在每英寸显示的像素数。

设备像素 && 逻辑像素 && dpr

设备像素(device independent pixels): 设备屏幕的物理像素
逻辑像素(CSS pixels): CSS像素

CSS样式和几乎所有的javascript设置html DOM 元素都使用CSS像素,因此实际上从来用不上设备像素,唯一的例外是screen.width/height。

dpr = 设备像素 / 逻辑像素

随着技术的发展,移动设备的屏幕像素密度越来越高。从iphone4开始,苹果公司推出了retina屏幕。。iphone4的分辨率提高了一倍,但屏幕尺寸却没有变化,这意味着同样大小的屏幕上,像素多了一倍,于是dpr = 2。dpr也有对应的javascript属性window.devicePixelRatio。以iphone5为例,iphone5的CSS像素为320px568px,dpr是2,所以其设备像素为640px1136px

前端开发

现在的iphone 6plus的dpr是3,所以UE出的设计稿宽都是414 * 3的,而我们在开发的时候都是把UE的字体、块宽和高等标注同时 / 3,这样就能和设计稿保持一致。当我们截屏iphone 6plus浏览器中访问开发好的网页,放到ps中进行测量,和设计稿中一致。

在这里一定要注意,在retina屏幕中显示图片的时候,为了保证不失真模糊,图片的尺寸必须是图片的显示尺寸 * dpr,这样在retina屏幕中被放大dpr倍后才会不失真。

例子

注意以下两种实现方式都有问题,显示单边1px,在retina屏幕上会有一条细缝,4边1px,在retina屏幕上会存在position定位从块元素的padding开始定位,会覆盖2条边,另外2条边则多出来了

单边1px

codepen实例

以下代码实现的是底部1px变换,其原理: 使用伪元素after绝对定位到块元素底部,宽度100%,高度1px,在Y轴上缩放1倍,记住要设置背景色。

html

<div class="box-1px-bottom-border">I'm box 1px bottom border</div>

css

.box-1px-bottom-border {position: relative;width: 100px;height: 100px;background: #0f0;&:after {content: ' ';display: block;left: 0;right: 0;position: absolute;bottom: 0;height: 1px;background: #f00;-webkit-transform-origin: 0 0;transform-origin: 0 0;@media screen and (-webkit-min-device-pixel-ratio: 2) {-webkit-transform: scaleY(.5);transform: scaleY(.5);}}
}

四边1px边框

codepen实例

<div class="box-four-side-border">I'm box four side border</div>

css

.box-four-side-border {width: 100px;height: 100px;background: #00f;position: relative;&:after {content: " ";display: block;width: 100%;height: 100%;position: absolute;left: 0;top: 0;border: 1px solid #f00;@media screen and (-webkit-min-device-pixel-ratio: 2) {width: 200%;height: 200%;-webkit-transform-origin: 0 0;transform-origin: 0 0;-webkit-transform: scale(.5);transform: scale(.5);}}
}

前端开发之retina屏幕相关推荐

  1. 移动前端开发之viewport,devicePixelRatio的深入理解

    移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...

  2. 深入理解移动前端开发之viewport

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或 ...

  3. date javascript 时区_第23节 Datejs 日期库-Web前端开发之Javascript-零点程序员-王唯

    Datejs 是一个开源的JavaScript库,用来解析.格式化和处理日期数据,支持多种语言的日期格式处理:官网:www.datejs.com/ Moment.js 是一个简单易用的轻量级JavaS ...

  4. 【转载】前端开发之CSS兼容写法经验总结

    为什么80%的码农都做不了架构师?>>>    前端开发之CSS兼容写法经验总结技术 maybe yes 发表于2014-11-23 22:47 原文链接 : http://blog ...

  5. 前端开发之SEO(搜索引擎优化)

    前端开发之SEO(搜索引擎优化) 文章目录 前言 一.突出重要内容 合理的title.description和keywords 语义化书写HTML代码,符合W3C标准 利用布局,把重要内容HTML代码 ...

  6. BCSP-玄子前端开发之JavaScript+jQuery入门CH13_表单校验

    BCSP-玄子前端开发之JavaScript+jQuery入门CH13_表单校验 4.13 表单验证 4.13.1 为什么要表单验证 保证输入的数据符合要求 减轻服务器的压力 [外链图片转存失败,源站 ...

  7. 前端开发之html超链接

    前端开发之html字体属性和超链接 前言 前端开发之html超链接 1.超链接的三种形式 1.外部链接:链接到外部文件 举例: <a href="02页面.html"> ...

  8. 前端开发之jQuery

    前端开发之jQuery 一.jquery简介 1. jquery是什么? 2. 什么是jQuery对象? 二.寻找元素(重要的选择器和筛选器) 1. 选择器 2. 筛选器 三.操作元素(属性 CSS ...

  9. 前端开发之vue可视化数据图表组件(Chart.js)

    前端开发之vue可视化数据图表组件(Chart.js) 前言 制作好的效果图 vue2中使用Chart.js 1.在项目中安装Chart.js 组件 2.vue文件 vue3中使用Chart.js v ...

最新文章

  1. JavaScript基本概念——数据类型
  2. Java:何时使用静态方法
  3. 基础网络和关键基础设施
  4. 台式电脑怎么连接手机热点_电脑搜不到手机热点 为什么搜不到手机热点
  5. 使用asyncScheduler进行Observable的延迟subscribe
  6. 他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~
  7. 相关登录随机验证码公共函数
  8. Windows核心编程调用打印机
  9. 公测: 机智云自动生成app代码
  10. 解决win7英文版下中文显示乱码问题
  11. 一杯茶的时间,上手第三方登录类库 JustAuth
  12. 固态硬盘是什么接口_固态硬盘接口有哪些,他们之间都有什么区别,该如何选择...
  13. html给div加圆角边框,border-radius是向元素添加圆角边框的方法
  14. Cisco ❀ VRF(虚拟路由转发表)
  15. 用python来编写TSP问题
  16. 智原深耕网通应用 布建完整ASIC解决方案
  17. 3DMax”——新手小白入门篇
  18. 《CorelDraw》课程标准
  19. 龙芯银河麒麟系统百度网盘下载
  20. origin中文版散点图拟合曲线_origin中两组数已经画出散点图,如何新增类似于excel中的趋势线?而且是幂函式的,求高手指点...

热门文章

  1. struct和union的大小问题
  2. Linux下各类TCP网络服务器的实现源代码
  3. ASP.NET设置数据格式与String.Format使用总结
  4. javascript表单之间的数据传递
  5. 使用eclipse创建Struts2项目
  6. 利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配
  7. C++11中std::initializer_list的使用
  8. C++11中头文件atomic的使用
  9. 二维码QR Code简介及其解码实现(zxing-cpp)
  10. 【Qt】使用sqlite3数据库时,主键自增和获取自增后的主键的