【发布时间】:2021-05-25 00:38:55
【问题描述】:
在我的代码中,我有一张标签图片,我更改了它的内容以加载其他图片。但我注意到闪烁。这是我的玩具代码。
setTimeout(replaceImage,3000);
function replaceImage(){
let pictureNode = document.getElementById('picture-carousel');
let markup = `
<source media="(min-width:50em)" srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris2_blue.png">
<source media="(min-width:25em)" srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris2_brown.png">
<source srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris3_blue.png">
<img src='http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/debris2_blue.png' title='Bla bla' alt='bla bla'>
`
pictureNode.innerHTML = markup;
}
<div>
<picture id='picture-carousel'>
<source media="(min-width:50em)" srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blend.png">
<source media="(min-width:25em)" srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blue.png">
<source srcset="http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_brown.png">
<img src='http://commondatastorage.googleapis.com/codeskulptor-assets/lathrop/asteroid_blend.png' title='Bla bla' alt='bla bla'> <!-- fallback -->
</picture>
</div>
我知道要为图像添加闪烁,我可以像这样预加载图像:
function loadImage(){
var img = new Image(),
x=document.getElementById('myImg');
img.onload=function(){
x.src = img.src;
}
img.src ='http://codeskulptor-demos.commondatastorage.googleapis.com/GalaxyInvaders/back03.jpg'; // this is the new url img to load';
}
<img src='http://codeskulptor-demos.commondatastorage.googleapis.com/GalaxyInvaders/back02.jpg' id='myImg'>
<button onclick='loadImage();'>Load new Image</button>
当我使用图片标签而不是 img 标签时如何预加载图片?
【问题讨论】:
标签: javascript html image responsive-design preload