譯文出處: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>
元素功能不足。它只有一個src
屬性,只能加載一張圖片資源,但是我們需要加載多個資源。
既然如此,你可能會很驚訝怎么我們還在討論<img>
元素而不是其他新東西例如<picture>
和srcset
。
不管采用哪種響應(yīng)式圖片方案,<img>
元素必不可少。
<img>
元素在所有的內(nèi)聯(lián)響應(yīng)式圖片解決方案中都飽受詬病。我喜歡把img
當做一個添加和應(yīng)用所有響應(yīng)式圖片規(guī)則的盒子。
你可以用JavaScript來監(jiān)控img
元素上currentSrc
的變化。下面一段簡單的腳本用來監(jiān)控改變并輸出到頁面上:
(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ōu)g覽器尺寸來觀察currentsrc
的變化。
將你的瀏覽器慢慢的縮小,你將看到如下圖的一個變化效果:
<img>
總是顯示當前資源,這意味著任何與<img>
元素交互的JavaScript代碼都會如期持續(xù)工作。
(還沒提到幾十年來瀏覽器開發(fā)人員寫的非常有價值的正確處理圖片代碼)
正如Eric Portis所說,當我們使用新的響應(yīng)式圖片標準時,“我們正逐漸加強img
”的特性。
在一些場景下單獨用img
可能就夠了:
img
元素就夠了。img
的圖片源。當然,這取決于需要適配的瀏覽器是否支持SVG。最好使用picture
元素來提供可選的圖片格式作為備用方案。會在這個系列里將會介紹這個元素的使用。
如果想要支持高分屏,我們需要擴展<img>
元素。請看這個系列的第3部分:Srcset
顯示分辨率。
更多建議: