2010-01-13 4 views
0

요소를 지정된 투명도에서 지정된 투명도로 사라질 수있는 함수를 찾으려고합니다. 예를 들어 0에서 .7까지는 0에서 1 또는 1에서 0으로 사라질 수있는 모든 것을 찾을 수 있습니다. 무엇을 무엇에서부터 지정할 수있는 항목을 찾을 수 없습니다. 내가 발견 한 모든 기능들이 꽤 이상하게 보였으므로 내가 찾은 기능들을 리버스 엔지니어링하는 시도는 실패했다.Javascript : specidied 불투명도에서 지정된 불투명도로 요소를 제거 하시겠습니까?

또한 프레임 워크없이이 작업을 수행하려고합니다.

감사합니다.

+1

jQuery.animate 및 jQuery.fadeTo의 소스를 살펴 보셨습니까? – prodigitalson

답변

3

, 당신은 제한 시간/간격으로 반복적으로 0이 아닌 다른 무언가 또는 1 불투명도 스타일을 설정합니다.

다음은 시작 지점으로 사용할 수있는 제거 된 페이드 기능입니다.

<script type="text/javascript"> 
    function fade(element, o0, o1, t) { 
     // IE compatibility. Detect lack of native 'opacity' support, and ensure element 
     // has layout for IE6-7. 
     // 
     var canopaque= 'opacity' in element.style; 
     if (!canopaque && 'currentStyle' in element && element.currentStyle.hasLayout===false) 
      element.style.zoom= '1'; 

     function setOpacity(o) { 
      if (canopaque) 
       element.style.opacity= ''+o; 
      else 
       element.style.filter= 'alpha(opacity='+Math.round(o*100)+')'; 
     } 

     var t0= new Date().getTime(); 
     setOpacity(o0); 
     var interval= setInterval(function() { 
      var dt= (new Date().getTime()-t0)/t; 
      if (dt>=1) { 
       dt= 1; 
       clearInterval(interval); 
      } 
      setOpacity(o1*dt+o0*(1-dt)); 
     }, 25); 
    } 
</script> 
<p id="foo"> hello. </p> 
<button onclick="fade(document.getElementById('foo'), 0.7, 0, 2000);">fade 0.7 to 0</button> 
0

JQuery 나 Prototype과 같은 모든 프레임 워크의 효과 라이브러리는 임의 값과의 페이딩을 허용합니다. JQuery와에

편집과는 : 미안 해요, 난 당신이 어떤 프레임 워크를 사용하지 않는 것이 overread. 그러나 그들은 적어도 당신에게 그것을하는 방법에 대한 아이디어를 제공해야합니다. 또한 0에서 1 대신 x에서 y로 이동하는 페이딩 함수를 조정할 수 있어야합니다. 0 또는 1의 대상 값을 그 사이의 값으로 조정하면됩니다.

0

사용이 예제 코드 : 그것에 특별한 비결은 없다

<html> 
<head> 
<title> </title> 
    <script> 
var nereidFadeObjects = new Object(); 
var nereidFadeTimers = new Object(); 
var opacitiz=0; 

//Функция предназначена для нумерации тегов 
window.onload=function() { 
    var e=document.getElementsByTagName('*') 
    for (var i=0,l=e.length;i<l;i++) e[i].sourceIndex=i 
} 

//Вызов nereidFade() для разных браузеров при наведение и отводе курсора мышкой 
      //@param object определяет из какого тега был вызов 
//@param num -- 1 - навели курсов мышкой, 0 - отвели курсор мышки       
function KrossBrows(object,num) { 
     if (num==1) 
       if (!document.all) nereidFade(object, 1,30,0.1); 
       else nereidFade(object, 100,30,10); 
     else 
       if (!document.all) nereidFade(object, 0.3,50,0.05); 
       else nereidFade(object, 30,50,5); 
} 

//Отвечает за прозрачнность 
//@param object определяет из какого тега был вызов 
//@param destOp конечная позиция для выполнения прозрачности 
    //@param rate время которое потребуется на вызов функции 
//@param delta шаг для прозрачности 
function nereidFade(object, destOp, rate, delta){ 
     if (!document.all) opacitiz=object.style.opacity; 
     else opacitiz=object.filters.alpha.opacity; 

     clearTimeout(nereidFadeTimers[object.sourceIndex]); 
     diff = destOp-opacitiz; 
     direction = 1; 
     if (opacitiz > destOp) direction = -1; 

       delta=Math.min(direction*diff,delta); 
     if (!document.all)     object.style.opacity=parseFloat(object.style.opacity)+(direction*delta); 
     else object.filters.alpha.opacity+=direction*delta; 

    if (opacitiz != destOp){ 
      nereidFadeObjects[object.sourceIndex]=object; 
       nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate); 
    } 
} 
</script> 
</head> 
<body> 
<IMG onmouseover="KrossBrows(this,1)" style="FILTER: alpha(opacity=30);opacity:0.3"  onmouseout="KrossBrows(this,0)" height=31 alt="" src="ace.gif" width=88 vspace=2  border=0></A> 
<IMG onmouseover="KrossBrows(this,1)" style="FILTER: alpha(opacity=30);opacity:0.3"  onmouseout="KrossBrows(this,0)" height=31 alt="" src="ace.gif" width=88 vspace=2  border=0></A> 
</body> 
      </html> 
+1

이상한 코드 ... 모든 DOM 요소에 sourceIndex를 태그 붙이면 무엇입니까? – Shog9

관련 문제