Le contenu de cet article concerne l'exemple de code de mouvement multi-objets en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Auparavant, nous utilisions des minuteries pour réaliser le mouvement d'un seul objet. Dans les projets, nous ne déplaçons souvent pas un seul objet, mais modifions les valeurs de plusieurs objets.
Ici, nous réaliserons le mouvement de plusieurs objets et valeurs arbitraires en modifiant les paramètres. Un cadre de mouvement qui peut modifier la largeur, la hauteur, les bordures, la taille de la police, la transparence et bien plus encore de l'objet.
Remarque : Dans les chapitres ci-dessus, nous utilisons tous offsetWidth (offsetWidth inclut la bordure et le remplissage, etc.) pour définir et obtenir des styles, car l'utilisation est simple, mais si l'objet contient border, padding, etc. Lors du style, une erreur sera signalée, nous utilisons donc ici une méthode plus rigoureuse currentStyle et getComputedStyle pour obtenir le style.
Remarque : Nous ne pouvons pas vraiment stocker certaines valeurs spécifiques dans l'ordinateur. Nous stockons certaines valeurs approximatives, telles que 0,07*100. Le résultat final n'est pas 7, nous allons donc arrondir et convertir ci-dessous. . est un entier.
Attention : Lorsque plusieurs objets sont en mouvement, les minuteries et certains paramètres ne doivent pas être partagés, sinon le mouvement sera effacé avant d'être terminé et d'autres mouvements seront déclenchés non plus. , ce qui entraînera la réintervention de certains paramètres avant qu'ils n'atteignent des valeurs fixes. Par conséquent, les minuteries dans les exemples suivants sont placées sur des éléments.
<!DOCTYPE html> <html> <head> <title>运动改变宽度、高度、边框、字体、透明度</title> <style> div { width: 200px; height: 200px; background: red; margin: 10px; float: left; border:1px solid #000; font-size:14px; } div:nth-child(5) { filter: alpha(opacity:30); opacity:0.3; } </style> <script> window.onload = function() { var oDiv1 = document.getElementById("div1"); var oDiv2 = document.getElementById("div2"); var oDiv3 = document.getElementById("div3"); var oDiv4 = document.getElementById("div4"); var oDiv5 = document.getElementById("div5"); oDiv1.onmouseover=function(){ startMove(this,"height", 400) } oDiv1.onmouseout=function(){ startMove(this,"height", 200) } oDiv2.onmouseover=function(){ startMove(this,"width", 400) } oDiv2.onmouseout=function(){ startMove(this, "width",200) } oDiv3.onmouseover=function(){ startMove(this,"fontSize", 50) } oDiv3.onmouseout=function(){ startMove(this, "fontSize",14) } oDiv4.onmouseover=function(){ startMove(this,"borderWidth", 100) } oDiv4.onmouseout=function(){ startMove(this, "borderWidth",1) } oDiv5.onmouseover=function(){ startMove(this,"opacity", 100) } oDiv5.onmouseout=function(){ startMove(this, "opacity",30) } } function getStyle(obj,name){ if(obj.currentStyle){ return obj.currentStyle[name]; } else{ return getComputedStyle(obj,false)[name]; } } function startMove(obj, attr, iTarget) { clearInterval(obj.timer); obj.timer = setInterval(function() { var cur=0; if(attr==="opacity"){ cur=Math.round(parseFloat(getStyle(obj,attr))*100);//有可能会出现误差0.07*100 } else{ cur=parseInt(getStyle(obj,attr)); } var speed = (iTarget - cur) / 6; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (cur === iTarget) { clearInterval(obj.timer); } else { if(attr==="opacity"){ obj.style.filter="alpha(opacity:"+cur+speed+")"; obj.style.opacity=(cur+speed)/100; }else{ obj.style[attr]=cur+speed+"px"; } } }, 30) } </script> </head> <body> <div id="div1">变宽</div> <div id="div2">变高</div> <div id="div3">文字变大</div> <div id="div4">borderwidth</div> <div id="div5">透明度</div> </body> </html>
Recommandations associées :
Méthode d'implémentation de mouvement multi-objets Javascript Analysis_Javascript skills
Implémentation JS d'exemples de mouvements multi-objets
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!