>  기사  >  웹 프론트엔드  >  JS는 jQuery의 animate() 애니메이션을 구현합니다.

JS는 jQuery의 animate() 애니메이션을 구현합니다.

小云云
小云云원래의
2018-01-23 10:28:021822검색

이 글에서는 기본 JS로 구현된 jQuery의 animate() 애니메이션 예제를 주로 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

매개변수 소개:

obj
애니메이션을 수행하는 요소
css JSON 값 쌍으로, "{속성 이름: 속성 값}" 형식으로, 순서와 애니메이션될 책의 순서 해당 ​​값
interval
속성의 각 변경에 대한 시간 간격
speedFactor 속도 인자로, 애니메이션이 버퍼링 효과를 가지게 합니다. 상수(speedFactor는 1)
func 애니메이션 실행 후 콜백 함수

참고:

각 요소에 타이머를 추가해야 합니다. 그렇지 않으면 서로 영향을 미칩니다.

cur != css[arr]는 각 속성이 목표 값에 도달했는지 여부를 결정합니다. 모든 속성이 목표 값에 도달한 경우에만 타이머가 지워집니다. 플래그의 기능은 특정 속성이 목표 값에 처음 도달했지만 목표에 도달하지 못한 다른 속성이 있을 때 타이머가 지워지는 것을 방지하는 것입니다. 값. 따라서 각 변경 전에 플래그를 true로 초기화하십시오. 목표에 도달하지 못한 속성이 발생하는 즉시 모든 속성이 목표 값에 도달할 때까지 플래그를 false로 설정하십시오.

속성 값 opacity의 값에는 소수가 있으므로 Math.ceil(속도) 및 Math.floor(속도)와 * 100 및 / 100 연산과 같은 특수 처리가 필요합니다.


function animate(obj, css, interval, speedFactor, func) { 
  clearInterval(obj.timer); 
  function getCss(obj, prop) { 
    if (obj.currentStyle) 
      return obj.currentStyle[prop]; // ie 
    else  
      return document.defaultView.getComputedStyle(obj, null)[prop]; // 非ie 
  } 
  obj.timer = setInterval(function(){ 
    var flag = true; 
    for (var prop in css) { 
      var cur = 0; 
      if(prop == "opacity")  
        cur = Math.round(parseFloat(getStyle(obj, prop)) * 100); 
      else  
        cur = parseInt(getStyle(obj, prop)); 
      var speed = (css[prop] - cur) * speedFactor; 
      speed = speed > 0 ? Math.ceil(speed): Math.floor(speed); 
      if (cur != css[prop]) 
        flag = false; 
      if (prop == "opacity") { 
        obj.style.filter = "alpha(opacity : '+(cur + speed)+' )"; 
        obj.style.opacity = (cur + speed) / 100; 
} 
      else  
        obj.style[prop] = cur + speed + "px"; 
    } 
    if (flag) { 
      clearInterval(obj.timer); 
      if (func) 
        func(); 
    } 
  }, interval); 
} 
var li = document.getElementsByTagName("li"); 
for(var i = 0; i < li.length; i ++){ 
  li[i].onmouseover = function(){ 
    animate(this, {width: 100, opacity: 0.5}, 10, 0.01, function(){ 
      alert("Finished!"); 
    }); 
  } 
}

관련 권장 사항:

Jquery의 animate() 응답이 너무 느려서 문제를 해결할 수 없습니다.

jquery 사용자 정의 애니메이션 animate()

jQuery animate() 메서드 사용법에 대한 심층적인 이해 example_jquery

위 내용은 JS는 jQuery의 animate() 애니메이션을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.