介紹
在整個(gè)網(wǎng)站的開發(fā)中,在管理圖片上較為困難。注意,圖片要在各種設(shè)備上平滑過渡顯示,它們將會(huì)碰到的問題有:
適當(dāng)?shù)膬?yōu)化和減少圖片的體積
注意不要浪費(fèi)帶寬(網(wǎng)站的成敗與否加載速度是其中主要因素之一)
設(shè)備使用相應(yīng)的解決方案
對(duì)于第一個(gè)問題,使用tinypng和jpegmini工具可以幫助減少圖片的體積和優(yōu)化圖片。
對(duì)于第二個(gè)問題,在一些場(chǎng)合下我們可能要使用到強(qiáng)大的媒體查詢。多虧了有他們,我們可以很簡(jiǎn)單的處理背景圖片的問題。但是,有些地方使用的是img來顯示圖片,這也是我們要解決的第三個(gè)問題,也是最后一個(gè)問題,如何根據(jù)設(shè)備的分辨率調(diào)用合適的圖像。
在這種情況之下,有個(gè)兩個(gè)解決方案:使用<picture>元素和<img>元素的srcset屬性。
在這篇文章中,我會(huì)向大家總體的介紹srcset屬性。
srcset屬性
使用這個(gè)屬性主要有什么好處呢?好處就是web開發(fā)人員可以給使用高分辨率的用戶顯示高分辨的圖像源,給其他設(shè)備分辨率的用戶使用其他的圖像源。在第一種情況下使用低pdd(pixel density displays)不需要背負(fù)著下載無用的高分辨率圖像,而擔(dān)心浪費(fèi)帶寬;而后者可以享受高清設(shè)備帶來的不一樣的享受。在第二種情況中,我們可以根據(jù)不同的屏幕尺寸指定不同的圖像,這主要是根據(jù)用戶的設(shè)備來提供一個(gè)較好的圖像源。
事實(shí)上,srcset屬性就做了這樣的事情,根據(jù)像素密度或用戶使用的屏幕尺寸大小,指定一個(gè)圖像源。所以說,srcset屬性可以讓瀏覽器提供一套建議,讓瀏覽器根據(jù)正確的行為匹配正確的圖像。通過這樣做,我們提高了web的質(zhì)量,同時(shí)提高了web頁面的加載速度和給用戶一個(gè)較好的體驗(yàn)。
在這一點(diǎn)上,這個(gè)屬性的基本特征就是:根據(jù)指定的條件來做選擇,使其工作。這對(duì)于我們編碼工作和實(shí)現(xiàn)的方法變理更為簡(jiǎn)易。
w3c規(guī)范是這樣描述srcset:srcset屬性允許作者根據(jù)不同分辨率或不同的視窗尺寸提多個(gè)不同分辨圖像。用戶代理會(huì)根據(jù)之前獲取的任何資源做選擇,從而避免多個(gè)資源加載浪費(fèi)帶寬和相關(guān)性能問題。
說起圖片的srcset屬性,估計(jì)有不少與時(shí)俱進(jìn)的小伙伴會(huì)在心中不由自主念想道:“這個(gè)我知道的,可以根據(jù)屏幕密度現(xiàn)實(shí)對(duì)應(yīng)尺寸圖片,例如……”
<img src=mm-width-128px.jpg srcset=mm-width-128px.jpg 1x, mm-width-256px 2x>
上面代碼對(duì)應(yīng)demo輕戳這里。當(dāng)然,我們也可以簡(jiǎn)寫成:
<img src=mm-width-128px.jpg srcset=mm-width-256px 2x>
由于我們都不是“別人家”的公司,因此,我們的辦公pc顯示器默認(rèn)設(shè)備像素比都是1,因此,這些顯示器呈現(xiàn)的圖片默認(rèn)都是128像素寬度的。下面問題來了,(不是挖掘機(jī)哪家強(qiáng)),如何讓屌絲顯示器模擬高設(shè)備像素比呢?
方法一:
chrome瀏覽器,切換設(shè)備模式,如下截圖
不同的2x顯示策略
還有些時(shí)候,使用同尺寸的高清圖片作為2x對(duì)應(yīng)圖片,雖然兩者圖片大小差不多,但個(gè)人覺得還是2倍尺寸優(yōu)化大圖更好一點(diǎn),為什么呢?
srcset當(dāng)初設(shè)計(jì)的用意是為了高密度屏幕上圖片更好的顯示,如果世界上就只有“不同設(shè)備密度”這一個(gè)戲劇沖突的話,2x圖片是高清圖還是2倍尺寸圖其實(shí)都無傷大雅。然而,事實(shí)上,生活無處不戲劇,現(xiàn)代web布局中,有種布局不可忽略,那就是「響應(yīng)式布局」,劇本往往會(huì)這樣,pc瀏覽器上顯示大圖,mobile瀏覽器上顯示小圖。發(fā)現(xiàn)沒,同樣是“大小圖的要求”,和設(shè)備像素比有類似的戲劇沖突。
于是,如果我們2x圖片使用的是高清圖,結(jié)合響應(yīng)式布局,我們可能需要4張圖片資源,即:小圖、小圖高清和大圖、大圖高清。但是,2x圖片走的是2倍尺寸圖片,我們只需要3張圖片資源,即:小圖、中圖以及中圖、大圖。
在老一代srcset規(guī)范成型過程中,其實(shí)已經(jīng)考慮到與響應(yīng)式布局的糾葛,出現(xiàn)了w描述符,例如,走高清路線的: