Retina时代的前端视觉优化

随着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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波10 - 直方图处理 - 局部直方图处理

这里写目录标题局部直方图处理局部直方图处理 因为像素是由基于整个图像的灰度的变换函数修改的。这种全局性方法适合于整体增强&#xff0c;但当目的是增强图像中几个小区域的细节时&#xff0c;通常就会失败。这是因为在这些小区域中&#xff0c;像素的数量对计算全局变换的…

CodeForces369C On Changing Tree

昨天的CF自己太挫了。一上来看到A题&#xff0c;就有思路&#xff0c;然后马上敲&#xff0c;但是苦于自己很久没有敲计数的题了&#xff0c;许多函数都稍微回忆了一阵子。A题的主要做法就是将每个数质因数分解&#xff0c;统计每个质因子的个数&#xff0c;对于每个质因子pi的…

ES6之const命令

一直以来以ecma为核心的js始终没有常量的概念&#xff0c;es6则弥补了这一个缺陷&#xff1b; const foofoo;foobar;//TypeError: Assignment to constant variable.上例声明了一个基本类型的常量&#xff0c;如过试图修改初始值则会报错&#xff1b;如果是引用类型的值同样适用…

C++和Rust_后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

这是Java&#xff0c;Go和Rust之间的比较。这不是基准测试&#xff0c;更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较&#xff0c;当然还有一个小的基准测试&#xff0c;可以看到每秒处理的请求数量&#xff0c;我将尝试对这些数字进行有意义的解读。为了…

Hdu 2015 偶数求和

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2040。水题。CODE&#xff1a;1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #include <math.h>5 using namespace std;6 7 const int maxn 102;8 9 int save[ma…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波11 - 直方图处理 - 使用直方图统计量增强图像

使用直方图统计量增强图像 全局均值和方差 μn∑i0L−1(ri−m)np(ri)(3.24)\mu_{n} \sum_{i0}^{L-1} (r_{i} - m)^{n} p(r_{i}) \tag{3.24}μn​i0∑L−1​(ri​−m)np(ri​)(3.24) m∑i0L−1rip(ri)(3.25)m \sum_{i0}^{L-1} r_{i} p(r_{i}) \tag{3.25}mi0∑L−1​ri​p(ri​…

数据结构 --- 堆

to be continued转载于:https://www.cnblogs.com/zhongzhiqiang/p/5808564.html

HDU - 1723 - Distribute Message

先上题目&#xff1a; Distribute Message Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1186 Accepted Submission(s): 547 Problem DescriptionThe contest’s message distribution is a big thing in pre…

nodejs 图片处理模块 rotate_学会Pillow再也不用PS啦——Python图像处理库Pillow入门!...

你在用什么软件进行图像处理呢&#xff1f;厌倦了鼠标和手指的拖拖点点&#xff0c;想不想用程序和代码进行图像的高效处理&#xff0c;Python作为简单高效又很强大的一门编程语言&#xff0c;对于图像的处理自然也是轻松拿下&#xff0c;听起来是不是很酷很极客&#xff0c;那…

创建一个追踪摄像机(2)

为了生成曲线&#xff0c;函数需要通过4个在沿着重量值在0和1之间的路径上连贯的位置。由于重量在这些2个值之间增加&#xff0c;曲线返回在更远的路径上的坐标。 当所提供的重量值为0&#xff0c;曲线将返回正确的坐标在第二个输入坐标。当所提供的重量值为1&#xff0c;曲线将…

Xcodebuild自动打包

#! /bin/bash #firtoken 29b441056e1e17c984cb32fadadsdddd shell_dirdirname $0 TARGET_NAME"SmartLock" DIR_PATH/Users/用户名/Desktop/SmartLock SIGN"iPhone Distribution:******" PROFILE"66d127d6-7963-4c20-ac8b-47e4f0fe8742" TEMP_DIR…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波12 - 空间域滤波基础 - 卷积运算(numpy 实现的三种卷积运算)

这篇文章比较长&#xff0c;请耐心看空间域滤波基础线性滤波可分离滤波器核空间域滤波和频率域滤波的一些重要比较如何构建空间滤波器第一种卷积方法&#xff08;公式法&#xff09;第二种卷积的方法&#xff08;可分离核&#xff09;第三种方法&#xff08;img2col)这是分离核…

hdu_1861_游船出租_201402282130

游船出租 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7238 Accepted Submission(s): 2411 Problem Description 现有公园游船租赁处请你编写一个租船管理系统。当游客租船时&#xff0c;管理员输入船号并按…

acer清理工具 clear下载_SolidWorks绿色版下载-SolidWorks完全清理工具v1.0免费版

SolidWorks完全清理工具(SWCleanUninstall)是一款绿色免费的SolidWorks完全卸载工具。很多SolidWorks安装不成功都是因为之前安装错误做成软件残留。这款工具可以完全清理很多SolidWorks留下的注册表垃圾。软件核心功能1、SWCleanUninstall可以直接删除电脑上的SolidWorks软件2…

ZOJ1221 Risk 图形的遍历

一开始做图形遍历的题都是用链表做的&#xff0c;这次用数组体会到了方便但就是有点浪费。 不过题目给的内存限制已经足够了。 View Code 1 #include<cstdio>2 #include<cstdlib>3 #include<cstring>4 #include<queue>5 #include<iostream>6 7 …

Android 从AndroidManifest获取meta-data

语法如下&#xff1a; <meta-data android:name"string"android:resource"resource specification"android:value"string" /><meta-data>标签可以作为子标签&#xff0c;可以被包含在<activity>、<application> 、<s…

trim()函数

参数string&#xff1a;string类型&#xff0c;指定要删除首部和尾部空格的字符串返回值String。 函数执行成功时返回删除了string字符串首部和尾部空格的字符串&#xff0c;发生错误时 返回空字符串&#xff08;""&#xff09;。 如果参数值为null时&#xff0c;会抛…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核

这里写目录标题平滑&#xff08;低通&#xff09;空间滤波器盒式滤波器核平滑&#xff08;低通&#xff09;空间滤波器 平滑&#xff08;也称平均&#xff09;空间滤波器用于降低灰度的急剧过渡 在图像重取样之前平滑图像以减少混淆用于减少图像中无关细节平滑因灰度级数量不…

python中str用法_python数据类型之str用法

1、首字母大写 语法&#xff1a;S.capitalize() ->str title "today is a good day"title_catitle.capitalize() print(title_ca) 结果&#xff1a;today is a good day 2、大写转小写 1 语法&#xff1a;S.casefold() ->str2 3 title "TODAY is a GOOD …

WPF 窗体设置

WPF 当窗体最大化时控件位置的大小调整&#xff1a; View Code 1 <Window x:Class"WpfApplication1.MainWindow"2 xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"3 xmlns:x"http://schemas.microsoft.com/wi…