我想找出一種方法來向iOS8客戶端提供高dpi圖像,同時還爲支持w語法的瀏覽器提供響應式圖像資源。根據W3C標準,應該可以對兩種語法在一個srcset屬性混合:HTML5 srcset:混合x和w語法
<img alt="The Breakfast Combo"
src="banner.jpeg"
srcset="banner-HD.jpeg 2x, banner-phone.jpeg 100w, banner-phone-HD.jpeg 100w 2x">
(來源:http://drafts.htmlwg.org/srcset/w3c-srcset/)
然而,當我運行在瀏覽器與實施例38(OS X,沒有高dpi),在其他情況下支持w語法的瀏覽器總是加載最大的圖像(banner-HD.jpeg),而與視口大小無關。當我添加
banner.jpeg 1x
到srcset Chrome使用的形象,但仍然忽略100W的圖像。
在我的情況,我想指定圖像的兩個較小的版本,以及2個資源:
<img src="default.png"
srcset="small.png 480w, [email protected] 480w 2x, medium.png 1x, [email protected] 2x">
這似乎在2X iOS8上的設備,其挑中@ 2個工作因爲它們不支持w語法。不過,無論視口大小如何,Chrome仍然不會關心和加載medium.png。
我在這裏做錯了什麼,或者這是Chrome的實施srcset中的已知問題?
謝謝你的澄清。突然間,我讀到的關於這個話題的很多博客文章對我來說更有意義,顯然有一些解釋了舊的和一些新的實現。 我已經嘗試過你的polyfill並非常喜歡它(尤其是因爲智能圖像加載)。不幸的是,在這種情況下,我受到CMS以及固定圖像寬度規格(高度和寬度屬性)的限制。 – s2b
哦,這是不好的。用尺寸實現respimg在實踐中確實很難。您可能需要檢查lazysize width data-sizes =「auto」。只要您嘗試一下,您就可以使用* .dev.js版本,它會在控制檯中提供關於您的標記的一些提示。顯然,它只在ff,即safari中做到這一點。事實上,那裏有一些糟糕的教程。另外請記住respimage不僅「快」,大約80%的編碼時間用於修復bug,並且與pf相比改進了標準合成。 Thx for use ;-) –
「在同一srcset屬性中混合使用寬度描述符和像素密度描述符是無效的。」 [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Img) –