随着New iPad的发布,平板也将逐渐进入Retina时代,在高分辨率设备里图片的显示效果通常不尽人意,为了达到最佳的显示效果就需要对图片进行优化,这里介绍一些优化方法:

一、用CSS替代图片

这一点在任何时候都适用;只是在当前我们可以更多的使用样式表来制作出设计效果,CSS3的圆角、渐变、模盒阴影、字体阴影能帮助我们处理绝大多数视觉效果,并且在各种分辨率下都有良好的表现。

CSS Button

二、为高分辨率设备提供高清图片

如果必须使用图片,通常是准备2套图片,一套原始尺寸( 为普通设备准备 ),一套两倍尺寸( 为高分辨设备准备 ),再根据设备的分辨率调用不同的图片,调用的方式有2种:

1.使用CSS媒体查询( CSS media queries ),适用于根据不同分辨率来加载不同的背景图片
内联样式:
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2){
/* 2倍分辨率 执行样式*/
}

外链样式:
<link href="retina.css" rel="stylesheet" type="text/css" media="only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)"/>

2.使用Javascript替换图片地址,适用于<img>标签加载的外链图片
首先使用 window.devicePixelRatio 来判断是否为高分辨率,然后替换图片的地址。

想了解此方法的细节,可以参考下这篇分析apple.com方案的文章:
http://blog.cloudfour.com/how-apple-com-will-serve-retina-images-to-new-ipads/
下面是文中提到的 image_replacer.js 源码:
https://gist.github.com/2029936

三、 Icon优化

独特的Icon是大多数网站必备的设计元素,常规的处理方式是使用 sprite 技术,配合上面介绍的 CSS media queries 方法达到最优的显示效果,除此之外前端工程师也在探索一些新的优化方式:

1.Icon Fonts
将图标制作成特殊的字体,然后使用CSS3的自定义字体(@font-face)调用

优点:

  • 文件体积小,一般20-50kb;
  • 图标可以通过CSS更改尺寸和颜色,添加阴影,hover颜色等。

缺点:

  • 制作成本较高,你需要矢量图形处理软件和专业的字体制作软件;
  • 不易维护,不同浏览器支持的字体格式不一样,需要制作多份。

一些现成的Icon Fonts资源,基本可满足常规的设计需求:

  • MODERN PICTOGRAMS
  • Font-Awesome
  • Social Media Icons Pack
  • PulsarJS @FontFace
  • ClickBits Web Icon System( 需付费 )

如果你对Icon Fonts的制作方法感兴趣可以参考这篇文章《CSS3 icon font完全指南》:
http://www.qianduan.net/css3-icon-font-guide.html

2.CSS Icon
与Icon Fonts思路类似,不同的是使用CSS来制作各种图标

优点:

  • 文件体积小,尺寸与Icon Fonts相当
  • 同样可以随意修改尺寸和颜色,添加阴影等。
  • 修改方便,调用灵活

缺点:

  • 受限于浏览器渲染能力,在不同浏览器中表现不一

资源:

  • Pure CSS GUI icons

关于CSS Icon的制作会在以后做介绍( 先挖个坑=。= )

3.SVG Icon
SVG是一种可伸缩矢量图形,调用方式和jpg、png等格式图片一样,通过CSS即可加载:
background-image: url('sprite.svg');
优点:

  • 文件体积小,因为SVG是XML格式定义图形,所以可压缩性更高
  • 在缩放时图形质量不会有所损失
  • 可以用来动态生成图形

缺点:

  • 同样受限于浏览器,支持SVG的浏览器有:Internet Explorer 9+、Firefox 4+、Chrome 4+、Safari 4+、Opera 9.5+

四、Canvas图片处理

这个方法有点偏门,来自嗷嗷的一篇文章:Retina 显示屏下 @2x 图片的模拟

优点

  • 大部分图片效果比原来好,不用做@2x 的图片
  • 多终端统一维护,脚本渐进增强
  • 文件小省带宽,3G 时还是有一定的优势 用EDGE的就更不用说了。

缺点

  • 效果真心没 @2x的好,当然如果有更好的算法也难说
  • canvas 读图片数据存在跨域问题
  • 锐化目前的实现,基本就是读点的操作,大图片手机估计吃不消

写在最后

达到高分辨率下最佳的视觉效果固然不错,但加载速度也是用户体验重要指标之一。所以有时候我们也要在优质与高速之间找一个平衡点,这里可以通过 navigator.connection 来判断用户的网络环境,如果是EDGE那还是斟酌下是否要给用户提供高清图片。

转载于:https://www.cnblogs.com/shihao/archive/2012/05/21/2511061.html

Retina时代的前端视觉优化相关推荐

  1. 前端视觉优化(一)CSS边框阴影、四周阴影讲解

    先上一个代码 通俗讲解吧,分5个参数 1.控制水平位置阴影,+为右边,0为中间(即两边都有,通过参3控制大小) 2.控制垂直方向阴影,+为下边,0为中间(即两边都有,通过参3控制大小) 3.模糊距离 ...

  2. (译)2019年前端性能优化清单 — 中篇

    (译)2019年前端性能优化清单 - 上篇 (译)2019年前端性能优化清单 - 中篇 (译)2019年前端性能优化清单 - 下篇 目录 资源优化 17. 使用 Brotli 或 Zopfli 进行纯 ...

  3. 一零四、前端性能优化详解

    1 前端性能优化 介绍 页面性能优化 浏览器 浏览器的主要作用 浏览器的组成结构 浏览器是多进程的 浏览器的渲染机制 重排reflow与重绘repaint 页面加载缓慢的原因 浏览器部分 代码部分 优 ...

  4. Java Web 前端高性能优化(二)

    2019独角兽企业重金招聘Python工程师标准>>> ######一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一) ...

  5. 列举6个常见且实用的Web前端性能优化方法

    在如今这个信息爆炸的时代,人们的节奏总是快速的,对于一个网站的耐心毕竟是有限的可怜的,如果网站不进行优化必定会流失相当一部分的客户,带来不必要的损失.那么从Web前端的性能优化上来说有哪些常见.实用的 ...

  6. Java Web 前端高性能优化(二) 1

    一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一)) 本次我们主要从图像BASE64 编码.GZIP压缩.懒加载与预加载以及 OneAP ...

  7. 乾坤 微前端_拥抱云时代的前端开发架构——微前端

    微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员.团队的增加,从一个普通应用演变成一个巨石应用(Frontend Monolith),随之而来的应用不可维护的问题.这类问题在企业级 ...

  8. 【Day11】平时在项目开发中都做过哪些前端性能优化

    平时在项目开发中都做过哪些前端性能优化 一.体验优化 二.提升页面性能 三.首页加载优化(减少白屏时间) 一.体验优化 从用户角度而言,优化能够让页面加载得更快.对用户的操作响应得更及时,能够给用户提 ...

  9. (译)2019年前端性能优化清单 — 上篇

    (译)2019年前端性能优化清单 - 上篇 (译)2019年前端性能优化清单 - 中篇 (译)2019年前端性能优化清单 - 下篇 写在译前:首先介绍一下我自己,一个跨行业的.完全非科班生的文科单身狗 ...

最新文章

  1. Android 中 JUnit 测试的配置
  2. Dos命令删除注册表项
  3. java ConcurrentHashMap 实现原理
  4. QT消息/事件循环机制与多线程的关系
  5. linux 文件理解,对linux中文件系统的理解
  6. HashMap原理解析
  7. 干货|详解最新语音识别框架 深度全序列卷积神经网络
  8. 2021年高考呼和浩特市二中成绩查询,呼和浩特市第二中学,是一所百强中学,2020年高考用实力来证明!...
  9. 白杨SEO:SEM和SEO有什么区别呢?
  10. php自动加载比直接加载慢,php之自动加载(懒加载)
  11. 阿里建直营物流,“三通一达”要被踢出局了?
  12. lora_pkt_fwd.c代码解读
  13. Fractions to Decimals_usaco2.4.5_暴力
  14. 2017_SIGIR_Item Silk Road: Recommending Items from Information Domains to Social Users
  15. 机械CAD软件中还能这样制作材料清单BOM表?
  16. 单片机的AVCC、AVSS、DVCC、DVSS引脚有何区别?
  17. MQTT 串口 TCP 互转工具
  18. IT信息订阅 RSS源列表
  19. ffmpeg剪切视频
  20. 用python实现在一组数据中,寻找到最大数和最小数并输出最大数和最小数所在的位置

热门文章

  1. 『设计模式』小老弟你猜不透我?-- 代理模式
  2. [机器学习] Boosting算法1 --- AdaBoost
  3. 交叉熵(cross_entropy)作为损失函数在神经网络中的作用
  4. mysql binlog研究
  5. LLVM4更新--简化对象定义
  6. 使用doxygen和latex生成PDF文件
  7. “乞讨者”王小波与“怪物”巴尔扎克
  8. Hive注册表那点事(5.0 VS 6.0)
  9. nodejs 游戏框架_nodejs游戏服务器框架
  10. navicat premium 链接postgresql 无法加载表_PostgreSQL 每周新闻 2020311