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.pswp.cn/news/260799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260799.shtml
英文地址,請注明出處:http://en.pswp.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…