원생 JS 가 jQuery 의 animate()애니메이션 예제 실현

2579 단어 jQueryanimate
본 고 는 원생 JS 가 jQuery 를 실현 하 는 animate()애니메이션 예 시 를 소개 하 였 으 며,이 글 이 여러분 에 게 도움 이 되 기 를 바 랍 니 다.
매개 변수 소개:
obj
애니메이션 요소 실행
css
JSON 수 치 는'{속성 명:속성 값}'형식 으로 애니메이션 을 실행 할 책의 순서 와 대응 하 는 값 을 가 리 킵 니 다.
interval
속성 이 매번 변 경 된 시간 간격 을 실행 합 니 다.
speedFactor
속도 인 자 는 애니메이션 이 등 속 이 변 하지 않 고 버퍼 효 과 를 가 집 니 다(speedFactor 는 1)
func
애니메이션 을 실행 한 후 리 셋 함수
주의:
모든 요소 에 타이머 하 나 를 추가 해 야 합 니 다.그렇지 않 으 면 서로 영향 을 줄 수 있 습 니 다.
cur != css[arr]모든 속성 이 목표 치 에 도 달 했 는 지 판단 합 니 다.모든 속성 이 목표 치 에 도달 해야만 타 이 머 를 제거 할 수 있 습 니 다.flag 의 역할 은 특정한 속성 이 첫 번 째 로 목표 치 에 도달 하 는 것 을 방지 하 는 것 이지 만 다른 속성 이 목표 치 에 도달 하지 못 한 경우 타 이 머 를 제거 하 는 것 입 니 다.따라서 매번 변경 하기 전에 flag 를 true 로 초기 화 합 니 다.목표 에 도달 하지 못 한 속성 을 만나면 flag 를 false 로 설정 하고 모든 속성 이 목표 값 에 도달 할 때 까지 타 이 머 를 제거 합 니 다.
속성 값 opacity 의 값 은 소수 이기 때문에 특수 처리 가 필요 합 니 다.Math.ceil(speed)과 Math.floor(speed),*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!"); 
    }); 
  } 
} 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기