2012-11-01 33 views
0

本质上,我试图完成的是制作一个内容滑块,它具有不透明的黄色div,滑过转换图像(up state),然后滑动到图像底部约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

我认为你正在寻找的动画功能,而不是效果基本show,这样的...

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

+0

感谢您的回应!但是,当我用.animate替换slideDown和slideUp时,我遇到了syntaxt错误。提示? – Shadna

+0

好的,解决了语法错误。现在,我用.animate替换了.slideUp/Down,现在div并没有出现......我做了一个简单的版本,动画为+ = 200和 - = 200。其余代码保持不变。思考? – Shadna

+0

他们没有出现吗?或仅在动画期间或之后?脱掉动画,看看它们是否出现在正确的起始位置。可能是一个CSS问题。为了证明概念,请在使用.animate()结束问题之前,先获得一个简单的版本以使用JSFiddle。 – jedmao