Retina时代的前端视觉优化
隨著New iPad的發(fā)布,平板也將逐漸進入Retina時代,在高分辨率設(shè)備里圖片的顯示效果通常不盡人意,為了達到最佳的顯示效果就需要對圖片進行優(yōu)化,這里介紹一些優(yōu)化方法:
一、用CSS替代圖片
這一點在任何時候都適用;只是在當前我們可以更多的使用樣式表來制作出設(shè)計效果,CSS3的圓角、漸變、模盒陰影、字體陰影能幫助我們處理絕大多數(shù)視覺效果,并且在各種分辨率下都有良好的表現(xiàn)。
二、為高分辨率設(shè)備提供高清圖片
如果必須使用圖片,通常是準備2套圖片,一套原始尺寸( 為普通設(shè)備準備 ),一套兩倍尺寸( 為高分辨設(shè)備準備 ),再根據(jù)設(shè)備的分辨率調(diào)用不同的圖片,調(diào)用的方式有2種:
1.使用CSS媒體查詢( CSS media queries ),適用于根據(jù)不同分辨率來加載不同的背景圖片
內(nèi)聯(lián)樣式:
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2){
/* 2倍分辨率 執(zhí)行樣式*/
}
外鏈樣式:
<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 來判斷是否為高分辨率,然后替換圖片的地址。
想了解此方法的細節(jié),可以參考下這篇分析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優(yōu)化
獨特的Icon是大多數(shù)網(wǎng)站必備的設(shè)計元素,常規(guī)的處理方式是使用 sprite 技術(shù),配合上面介紹的 CSS media queries 方法達到最優(yōu)的顯示效果,除此之外前端工程師也在探索一些新的優(yōu)化方式:
1.Icon Fonts
將圖標制作成特殊的字體,然后使用CSS3的自定義字體(@font-face)調(diào)用
優(yōu)點:
- 文件體積小,一般20-50kb;
- 圖標可以通過CSS更改尺寸和顏色,添加陰影,hover顏色等。
缺點:
- 制作成本較高,你需要矢量圖形處理軟件和專業(yè)的字體制作軟件;
- 不易維護,不同瀏覽器支持的字體格式不一樣,需要制作多份。
一些現(xiàn)成的Icon Fonts資源,基本可滿足常規(guī)的設(shè)計需求:
- 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來制作各種圖標
優(yōu)點:
- 文件體積小,尺寸與Icon Fonts相當
- 同樣可以隨意修改尺寸和顏色,添加陰影等。
- 修改方便,調(diào)用靈活
缺點:
- 受限于瀏覽器渲染能力,在不同瀏覽器中表現(xiàn)不一
資源:
- Pure CSS GUI icons
關(guān)于CSS Icon的制作會在以后做介紹( 先挖個坑=。= )
3.SVG Icon
SVG是一種可伸縮矢量圖形,調(diào)用方式和jpg、png等格式圖片一樣,通過CSS即可加載:
background-image: url('sprite.svg');
優(yōu)點:
- 文件體積小,因為SVG是XML格式定義圖形,所以可壓縮性更高
- 在縮放時圖形質(zhì)量不會有所損失
- 可以用來動態(tài)生成圖形
缺點:
- 同樣受限于瀏覽器,支持SVG的瀏覽器有:Internet Explorer 9+、Firefox 4+、Chrome 4+、Safari 4+、Opera 9.5+
四、Canvas圖片處理
這個方法有點偏門,來自嗷嗷的一篇文章:Retina 顯示屏下 @2x 圖片的模擬
優(yōu)點
- 大部分圖片效果比原來好,不用做@2x 的圖片
- 多終端統(tǒng)一維護,腳本漸進增強
- 文件小省帶寬,3G 時還是有一定的優(yōu)勢 用EDGE的就更不用說了。
缺點
- 效果真心沒 @2x的好,當然如果有更好的算法也難說
- canvas 讀圖片數(shù)據(jù)存在跨域問題
- 銳化目前的實現(xiàn),基本就是讀點的操作,大圖片手機估計吃不消
寫在最后
達到高分辨率下最佳的視覺效果固然不錯,但加載速度也是用戶體驗重要指標之一。所以有時候我們也要在優(yōu)質(zhì)與高速之間找一個平衡點,這里可以通過 navigator.connection 來判斷用戶的網(wǎng)絡(luò)環(huán)境,如果是EDGE那還是斟酌下是否要給用戶提供高清圖片。
轉(zhuǎn)載于:https://www.cnblogs.com/shihao/archive/2012/05/21/2511061.html
總結(jié)
以上是生活随笔為你收集整理的Retina时代的前端视觉优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#委托之就是跟委托过不去…
- 下一篇: 浏览器检测,移动网络的在线离线及网络状态