2013-04-30 230 views
0

我想做一个网站至极有一个部分,内容必须水平滚动,因为你点击菜单按钮,它也有方向导航,我想我把它与方向导航但它我不知道如何跟踪我的div的位置,以便每次点击它们时移动它们。我正在尝试使用offset();与jquery,但不能工作。如果有人能帮助我实现这一目标,我将不胜感激。生病离开你一些代码和一个JS小提琴,所以你们可以看到我到目前为止。水平滚动内容

的html代码:

<nav> 
    <ul> 
     <li id="1" class="active-state">1</li> 
     <li id="2">2</li> 
     <li id="3">3</li> 
     <li id="4">4</li> 
     <li id="5">5</li> 
    </ul> 
</nav> 

<section id="content"> 
    <div id="wrapper"> 
     <div class="content" id="yellow"></div> 
     <div class="content" id="blue"></div> 
     <div class="content" id="red"></div> 
     <div class="content" id="purple"></div> 
     <div class="content" id="green"></div> 
    </div> 
</section> 
<ul id="directionNav"> 
    <li id="left">left</li> 
    <li id="right">right</li> 
</ul> 

jQuery代码做水平滚动:

$("#3").on("click", horizontalScroll); 
$("#4").on("click", horizontalScroll2); 

function horizontalScroll() { 
console.log($("#3").offset().left); 
$("#wrapper").animate({ 
    right: ($("#4").offset().left -1200) 
}); 
console.log("clicked"); 
} 

function horizontalScroll2() { 
console.log($("#4").offset().left); 
$("#wrapper").animate({ 
    right: ($("#4").offset().left -1200) 
}); 
console.log("clicked"); 
} 

这里是小提琴:http://jsfiddle.net/xtatanx/DY3k3/

非常感谢你给大家!

+0

我认为有可用于此目的的插件负载已经。尝试http://jquery.malsup.com/cycle/int2.html – sanman 2013-04-30 16:01:16

回答

1

我认为你的代码很多!

给属性与网页的HTML标记,他被链接上:

<li frame='1' class='nav'>page 1</li> 

然后加上所有.nav一个劲儿地功能,将进入所谓的attribut页:

function changeFrame(){ 
    $('#wrapper').animate({left : $(this).attr('frame')*-600}); 
    $('.active-state').removeClass('active-state') 
    $(this).addClass('active-state') 
} 

对于你的下一个/ prev链接,只需检查你目前正在的页面并添加/减法1.我在2函数中做了一个更清晰的代码。

在单击它检查至极上点击:

function navigFrame(){ 
    switch(this.id){ 
     case 'left' : doNavig(-1); break; 
     case 'right' : doNavig(1); break; 
    } 
} 

而这里的onNavig代码:

function doNavig(direction){ 
    var newPage = parseInt($('.active-state').attr('frame'))+direction; 
    if(newPage < $('.nav').length && newPage >= 0){ 
     $('#wrapper').animate({left : newPage*-600}); 
     $('.active-state').removeClass('active-state') 
     $('.nav:nth-child('+String(newPage + 1)+')').addClass('active-state') 
    } 
} 

代码可以更优化,但我希望你做一些工作:)

下面是完整的代码:http://jsfiddle.net/DY3k3/2/

+0

以及我只是学习JavaScript和jQuery这就是为什么我编码这么多:P,但我感谢你的帮助虐待代码研究,以了解所有你没有!非常感谢你!所以有用! – 2013-04-30 17:59:52

+0

这是我的荣幸。如果你需要帮助来理解我所做的事情(功能或其他),请随时在这里提问。 – 2013-04-30 18:06:53

+0

我实际上有1个问题,我仍然不明白它是如何在一个方向上动画-600,但是当它到达它的位置时,它应该动画+600而不是-600右?你只需要几行就可以达到这个效果 – 2013-04-30 19:22:22