img srcset 未加载时是否可能,然后回退 img src?
is possible when img srcset not loaded, then fallback img src?
我知道当 none 个来源与属性媒体匹配时使用后备图像。
但是,如果媒体匹配但未加载 scrset,我将尝试执行此操作,然后将加载后备 img,以防我的图像以某种方式丢失至少后备可能是备份。
或者有什么方法可以适合这种情况?
<picture>
<source media="(min-width: 320px)" srcset="/img/not-exist.jpg">
<img src="https://images.unsplash.com/photo-1519455953755-af066f52f1a6?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80" alt="this is img">
</picture>
这个link会有帮助HTMLImageElement.complete
并在此处查看解决方案。请注意,如果 srcset 未加载,我已将 srcset 和 src 属性设置为等于 img src 属性,这样 window resize 它不会尝试再次加载丢失的 srcset 属性。您还想更新逻辑以检查视口宽度,我敢肯定,您可以合并 lodash 来消除抖动,但希望这会让您指向正确的方向:
window.onload = function(){
var parent = document.getElementById("parent-element");
var source = parent.querySelector("source");
var img = parent.querySelector("img");
var srcset = source.getAttribute("srcset");
var src = img.getAttribute("src");
if(!srcset.complete){
source.setAttribute("srcset", src);
img.setAttribute("src", src);
}
}
<picture id="parent-element">
<source media="(min-width: 320px)" srcset="/img/not-exist.jpg">
<img src="https://images2.minutemediacdn.com/image/upload/c_fill,g_auto,h_1248,w_2220/v1584388937/shape/mentalfloss/536413-gettyimages-1077470274.jpg?itok=NoDcW5uz" alt="this is img">
</picture>
我知道当 none 个来源与属性媒体匹配时使用后备图像。
但是,如果媒体匹配但未加载 scrset,我将尝试执行此操作,然后将加载后备 img,以防我的图像以某种方式丢失至少后备可能是备份。
或者有什么方法可以适合这种情况?
<picture>
<source media="(min-width: 320px)" srcset="/img/not-exist.jpg">
<img src="https://images.unsplash.com/photo-1519455953755-af066f52f1a6?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80" alt="this is img">
</picture>
这个link会有帮助HTMLImageElement.complete
并在此处查看解决方案。请注意,如果 srcset 未加载,我已将 srcset 和 src 属性设置为等于 img src 属性,这样 window resize 它不会尝试再次加载丢失的 srcset 属性。您还想更新逻辑以检查视口宽度,我敢肯定,您可以合并 lodash 来消除抖动,但希望这会让您指向正确的方向:
window.onload = function(){
var parent = document.getElementById("parent-element");
var source = parent.querySelector("source");
var img = parent.querySelector("img");
var srcset = source.getAttribute("srcset");
var src = img.getAttribute("src");
if(!srcset.complete){
source.setAttribute("srcset", src);
img.setAttribute("src", src);
}
}
<picture id="parent-element">
<source media="(min-width: 320px)" srcset="/img/not-exist.jpg">
<img src="https://images2.minutemediacdn.com/image/upload/c_fill,g_auto,h_1248,w_2220/v1584388937/shape/mentalfloss/536413-gettyimages-1077470274.jpg?itok=NoDcW5uz" alt="this is img">
</picture>