【问题标题】:Jquery div slider + menuJquery div滑块+菜单
【发布时间】:2012-09-04 10:27:13
【问题描述】:

目前我需要为<div> 制作一个滑块。但是由于大多数插件的大小,我正在尝试创建自己的 jquery 脚本,因为我只需要基础知识。但老实说,我真的是 jQuery 的初学者,需要一些帮助。

目前我有一个 <div> 作为容器(overflow:hidden 和 250px 宽度),在那个 <div> 我有另一个 <div> 需要从右向左移动(宽度 2500px)。我希望 $(document).ready 函数上的那个 div 以 250px 的步长向左移动,间隔为 5 秒。但是在花了整个上午试图弄清楚从哪里开始之后,我仍然卡住了。

除了我想要以下选项:

  1. 内部<div> 完全向左后,淡出回到原来的位置。
  2. 一种创建“点”以导航到特定位置的方法,当导航到该位置时,幻灯片将从该位置开始动画。

我知道这是一个很大(困难?)的问题,但即使是一点点帮助也会非常感激。

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:

这是我创建的符合您要求的演示:little link。 jQuery/JavaScript 已完全注释以供参考,但如果任何部分需要额外详细说明,我很乐意解释更多!

【讨论】:

  • 我目前得到了这个:jsfiddle.net/hpXfR/7 在@Kapil Sharma 的帮助下,但我对你的分页部分很好奇.. 我不完全理解。你能再解释一下吗?
  • @Augus 我用更多的 cmets 更新了演示 + 最后的注释段落解释了我们如何获得 left 公式。如果您需要更多详细信息,请告诉我! :)
  • 我从你的例子中学到了很多,非常感谢。但最后我尝试了@roko 的答案,效果很好。
【解决方案2】:

jsBin demo

HTML:

<div id="slider">    
  <div id="slider_cont">
    <div id="slide">
       <!-- wide content here -->
    </div>    
  </div>  
  <div id="dots"><!--leave empty--></div> 
</div>

CSS:

#slider_cont{
  width:250px;
  height:180px;
  position:relative;
  background:#eee;
  overflow:hidden;
}
#slide{
  position:absolute;
  left:0;
  width:2500px;
  height:180px;
}
.dot{
  cursor:pointer;
  background:#444;
  width:10px;
  height:10px;
  margin:4px 2px;
  position:relative;
  float:left;
  border-radius:10px;
}
.dot.active{
  background:#49a;
}

jQuery:

var steps = 10,  // SET DESIRED n OF STEPS
    delay = 3500,// SET DESIRED DELAY
    galW = $('#slider_cont').width(),
    c = 0,      // counter
    intv;       // interval

// generate dots
for(i=0;i<steps;i++){
 $('#dots').append('<div class="dot" />'); 
}
$('#dots .dot').eq(c).addClass('active');

// ANIMATIONS function
function anim(){
  c=c%steps; // reset counter to '0' if greater than steps
  $('#slide').stop().animate({left: '-'+galW*c},800);
  $('#dots .dot').removeClass('active').eq(c).addClass('active');
}

// AUTO SLIDE function
function auto(){
  intv = setInterval(function(){
    c++; anim();
  },delay);
}
auto(); // kick auto slide

// PAUSE slider on mouseenter
$('#slider').on('mouseenter mouseleave',function(e){
  var evt = e.type=='mouseenter'? clearInterval(intv) : auto();
});

// CLICK dots to animate
$('#dots').on('click','.dot',function(){
  c=$(this).index(); anim();
});

希望我对代码进行了很好的评论,如果您有问题,请询问

【讨论】:

    【解决方案3】:

    用正确的程序更新了你的 JSFiddle

    fiddle demo

    【讨论】:

    • 很酷,谢谢你,我现在得到了这个:jsfiddle.net/hpXfR/7,我对@Abody97 答案的分页部分很好奇,但你帮了我很多忙!。
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2013-05-21
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多