2011-10-26 120 views
1

所以这应该是相当基本的...我正在这样做,但我想问几个不同的选项。jQuery:跳转到下一个<section>

一个选择是使用“平滑滚动”和锚名称......但我觉得这是相当不一致的。

这是我的HTML结构:

<section id="home"> 
<!-- some content --> 
</section> 

<section id="about"> 
<!-- some content --> 
</section> 

<section id="services"> 
<!-- some content --> 
</section> 

... 

我对段的右边,有一个“快速按钮”,基本上让你“旅行”向上或向下的部分章节。

+3

你的问题是什么? – Birey

+0

我认为这很明显:“但我想要求一些不同的选择。”正如我所说的,我使用的是一个名为“Smooth Scroll”的选项,但它有点不一致。 – dcolumbus

回答

0

查看scrollTo jQuery插件,它应该完全满足您的需求。

5
jQuery.fn.extend({ 
    scrollTo : function(speed, easing) { 
    return this.each(function() { 
     var targetOffset = $(this).offset().top; 
     $('html,body').animate({scrollTop: targetOffset}, speed, easing); 
    }); 
    } 
}); 

// Scroll to "about" section 
$('#about').scrollTo('fast', 'linear'); 

更新 - 从一节跳转到节用一个简单的事件处理程序:

JQuery的:

$('.next-section').click(function(){ 
    var $this = $(this), 
     $next = $this.parent().next(); 

    $next.scrollTo($next.offset().top, 500, 'linear'); 
}); 

$('.prev-section').click(function(){ 
    var $this = $(this), 
     $prev = $this.parent().prev(); 

    $prev.scrollTo($prev.offset().top, 500, 'linear'); 
}); 

HTML:

<section id="about"> 
    <a href="#" class="prev-section">Previous Section</a> 
    <a href="#" class="next-section">Next Section</a> 
    <div class="section-content"> 
     Foobar 
    </div> 
</section> 

这里有一个演示:http://jsfiddle.net/AlienWebguy/Xdg2k/

+0

感谢您的...除了将滚动功能附加到特定按钮,我还需要能够向下滚动/向上滚动页面“

”到“
” – dcolumbus

+0

查看更新的代码段 – AlienWebguy

+0

感谢您的更新代码。它很好地工作,除了它不会缓解...... – dcolumbus

0

你可以尝试只设置scrollTop的

var doc = (document.contentWindow || document).document || document.ownerDocument || document, 
    el = ($.browser.webkit) ? doc.body : doc.documentElement; 

$(el).scrollTop($('#services').offset().top);