Maison > Questions et réponses > le corps du texte
J'ai appliqué une image d'arrière-plan répétitive du canevas au div via JavaScript comme ceci :
var img_canvas = document.createElement('canvas'); img_canvas.width = 16; img_canvas.height = 16; img_canvas.getContext('2d').drawImage(canvas, 0, 0, 16, 16); var img = img_canvas.toDataURL("image/png"); document.querySelector('#div').style.backgroundImage = 'url(' + img + ')';
Je dois le mettre à jour souvent. Le problème est qu'il scintille lors des changements, ce qui ne semble pas se produire dans Chrome, mais est vraiment mauvais dans Firefox et Safari. Est-il possible d'empêcher cela ? Je ne pense pas que cela se produise puisqu'il s'agit d'une dataurl et n'a donc pas besoin d'être téléchargée.
Solution :
// create a new Image object var img_tag = new Image(); // when preload is complete, apply the image to the div img_tag.onload = function() { document.querySelector('#div').style.backgroundImage = 'url(' + img + ')'; } // setting 'src' actually starts the preload img_tag.src = img;
P粉8785424592023-10-21 16:14:30
Préchargez des images comme celle-ci, pas besoin de les inclure 和
display: none
<link rel="preload" href="/images/bg-min.png" as="image">
P粉3646420192023-10-21 12:01:11
Essayez de précharger les ressources d'image dans le stockage de l'appareil en incluant l'image dans le DOM, comme indiqué dans le code HTML suivant. L'erreur peut se produire car la ressource image doit être chargée, ce qui prend un certain temps (scintillement).
<img src="imageToPreload.png" style="display:none;" alt="" />
Vous préférerez peut-être utiliser sprites-images. En utilisant des sprites, votre application nécessitera moins de requêtes HTTP pour charger toutes les ressources dans votre page. Si vous utilisez css 动画
, veuillez également ajouter les styles CSS suivants. Cela empêchera le scintillement de l'arrière-plan sur les appareils mobiles :
-webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; -ms-backface-visibility: hidden;