譯文出處:http://www.w3cplus.com/responsive/responsive-images-101-part-2-img-required.html
英文原文:http://blog.cloudfour.com/responsive-images-101-part-2-img-required/
我們需要的響應(yīng)式圖片解決方案的主要原因之一是<img>
元素功能不足。它只有一個(gè)src
屬性,只能加載一張圖片資源,但是我們需要加載多個(gè)資源。
既然如此,你可能會(huì)很驚訝怎么我們還在討論<img>
元素而不是其他新東西例如<picture>
和srcset
。
不管采用哪種響應(yīng)式圖片方案,<img>
元素必不可少。
<img>
元素在所有的內(nèi)聯(lián)響應(yīng)式圖片解決方案中都飽受詬病。我喜歡把img
當(dāng)做一個(gè)添加和應(yīng)用所有響應(yīng)式圖片規(guī)則的盒子。
你可以用JavaScript來(lái)監(jiān)控img
元素上currentSrc
的變化。下面一段簡(jiǎn)單的腳本用來(lái)監(jiān)控改變并輸出到頁(yè)面上:
(function() {
var currentSrc, oldSrc, imgEl;
var showPicSrc = function() {
oldSrc = currentSrc;
imgEl = document.getElementById('picimg');
currentSrc = imgEl.currentSrc || imgEl.src;
if (typeof oldSrc === 'undefined' || oldSrc !== currentSrc) {
document.getElementById('logger').innerHTML = currentSrc;
}
};
// You may wish to debounce resize if you have performance concerns
window.addEventListener('resize', showPicSrc);
window.addEventListener('load', showPicSrc);
})(window);
你可以在示例頁(yè)面觀察實(shí)際反映。改變?yōu)g覽器尺寸來(lái)觀察currentsrc
的變化。
將你的瀏覽器慢慢的縮小,你將看到如下圖的一個(gè)變化效果:
<img>
總是顯示當(dāng)前資源,這意味著任何與<img>
元素交互的JavaScript代碼都會(huì)如期持續(xù)工作。
(還沒提到幾十年來(lái)瀏覽器開發(fā)人員寫的非常有價(jià)值的正確處理圖片代碼)
正如Eric Portis所說,當(dāng)我們使用新的響應(yīng)式圖片標(biāo)準(zhǔn)時(shí),“我們正逐漸加強(qiáng)img
”的特性。
在一些場(chǎng)景下單獨(dú)用img
可能就夠了:
img
元素就夠了。img
的圖片源。當(dāng)然,這取決于需要適配的瀏覽器是否支持SVG。最好使用picture
元素來(lái)提供可選的圖片格式作為備用方案。會(huì)在這個(gè)系列里將會(huì)介紹這個(gè)元素的使用。
如果想要支持高分屏,我們需要擴(kuò)展<img>
元素。請(qǐng)看這個(gè)系列的第3部分:Srcset
顯示分辨率。
更多建議: