2012-11-01 6 views
0

본질적으로 내가 달성하려고하는 것은 전환되는 이미지 위로 슬라이드 한 불투명 한 노란색 div가있는 콘텐츠 슬라이더를 만든 다음 (아래 상태) 이미지의 아래쪽에서 약 100px로 슬라이드합니다. 회색 (다운 상태). 이러한 다운 상태는 클릭하면 업 상태와 관련 이미지로 확장되는 슬라이드 선택기의 역할을해야합니다.JS 및 CSS의 콘텐츠 슬라이더

여러 콘텐츠 및 슬라이드 쇼 빌드를 사용해 보았지만 이러한 현상이 발생하지 않도록 노력해 봤지만 그 중 아무 것도 효과를 개발할 수 없습니다. s3Slider는 슬라이드 당 최대 상태 애니메이션을 얻는 동안 내가 가장 성공한 것입니다.

다음은 JS의 ::

(function($){ 

$.fn.s3Slider = function(vars) {  

    var element  = this; 
    var timeOut  = (vars.timeOut != undefined) ? vars.timeOut : 4000; 
    var current  = null; 
    var timeOutFn = null; 
    var faderStat = true; 
    var mOver  = false; 
    var items  = $("#" + element[0].id + "Content ." + element[0].id + "Image"); 
    var itemsSpan = $("#" + element[0].id + "Content ." + element[0].id + "Image span"); 

    items.each(function(i) { 

     $(items[i]).mouseover(function() { 
      mOver = true; 
     }); 

     $(items[i]).mouseout(function() { 
      mOver = false; 
      fadeElement(true); 
     }); 

    }); 

    var fadeElement = function(isMouseOut) { 
     var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut; 
     thisTimeOut = (faderStat) ? 10 : thisTimeOut; 
     if(items.length > 0) { 
      timeOutFn = setTimeout(makeSlider, thisTimeOut); 
     } else { 
      console.log("Poof.."); 
     } 
    } 

    var makeSlider = function() { 
     current = (current != null) ? current : items[(items.length-1)]; 
     var currNo  = jQuery.inArray(current, items) + 1 
     currNo = (currNo == items.length) ? 0 : (currNo - 1); 
     var newMargin = $(element).width() * currNo; 
     if(faderStat == true) { 
      if(!mOver) { 
       $(items[currNo]).fadeIn((timeOut/6), function() { 
        if($(itemsSpan[currNo]).css('bottom') == 0) { 
         $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } else { 
         $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } 
       }); 
      } 
     } else { 
      if(!mOver) { 
       if($(itemsSpan[currNo]).css('bottom') == 0) { 
        $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
         $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } else { 
        $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
        $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } 
      } 
     } 
    } 

    makeSlider(); 

}; 

})(jQuery); 

그것은 매우 짧은 코드 그리고 내가 원하는 효과를 얻기 위해이를 수정하기 위해 노력하고있어. jquery에서 .slideUp 및 .slideDown 이벤트를 호출하는 코드가있는 것 같습니다. 나는 그 애니메이션을 내용을 숨기지 않고 앞서 언급 한 다운 상태 높이로 움직이는 방법을 이해할 수 없습니다.

그 어떤 도움이 특히 좋을 것입니다. 전체 콘텐츠 슬라이더 솔루션에 대한 도움은 생명의 은인입니다.

jquery의 세계를 이해하는 데 도움을 주신 시간과 도움에 감사드립니다.

+0

[링크] (http://www.bwpcommunications.com/testpage/ index.php) 여기에 현재 페이지가 있습니다. – Shadna

답변

0

난 당신이 같은 대신 slideUp의 애니메이션 기능을 찾고 생각 ...

$someDiv.animate({top: '-=200'}); 

http://api.jquery.com/animate/

+0

응답 해 주셔서 감사합니다! 그러나, slideDown 및 slideUp을 .animate로 바꾸면 구문 오류가 발생합니다. 팁? – Shadna

+0

그래, 구문 오류에 대한 해결. 이제, .slideUp/Down을 .animate로 바꿨습니다. 이제 div가 나타나지 않습니다 ... + 200 및 + = 200 애니메이션을 적용한 간단한 버전을 만들었습니다. 나머지 코드는 그대로 유지합니다. 생각? – Shadna

+0

그들은 전혀 나타나지 않습니까? 또는 애니메이션 중 또는 애니메이션 후에 만? 애니메이션을 벗고 오른쪽에서 시작 위치에 나타나는지 확인하십시오. CSS 문제 일 수 있습니다. 개념 증명을 위해 문제가 .animate()로 결론 지어지기 전에 JSFiddle에서 작업 할 간단한 버전을 얻으십시오. – jedmao

관련 문제