Maison  >  Article  >  interface Web  >  Exemple de code pour le mouvement multi-objets en javascript

Exemple de code pour le mouvement multi-objets en javascript

不言
不言original
2018-08-31 11:14:161342parcourir

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.

Ce qui suit est un exemple de ce que nous avons fait

<!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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn