2014-09-30 73 views
1

我有一个包含大量文本的页面,并决定使用固定的导航栏,以便在各个节之间跳转。它工作得很好,但不是让页面在div之间跳转,而是想让它在上下滚动。divs之间的平滑滚动

这是我到目前为止;

<ul> 
    <li><a href="#2010">2010</a></li> 
    <li><a href="#2009">2009</a></li> 
    <li><a href="#2008">2008</a></li> 
    <li><a href="#2007">2007</a></li> 
    <li><a href="#2006">2006</a></li> 
    <li><a href="#2005">2005</a></li> 
    <li><a href="#2003">2003</a></li> 
    <li><a href="#1999">1999</a></li> 
<ul> 

    <div id="2010"></div> 
    <div id="2009"></div> 
    <div id="2008"></div>`` 
    <div id="2007"></div> 
    <div id="2006"></div> 
    <div id="2005"></div> 
    <div id="2003"></div> 
    <div id="1999"></div> 

此外,它有可能有李元素指向div显示是另一种颜色比其他李元素?

+0

我已经用更漂亮的HTML内容更新了我的答案。 http://stackoverflow.com/a/26126679/947687 – dizel3d 2014-09-30 17:36:24

回答

0

好吧,拿它! http://jsfiddle.net/a126cwb3/11/

// handle links with @href started with '#' only 
$(document).on('click', 'a[href^="#"]', function(e) { 
    // target element id 
    var id = $(this).attr('href'); 

    // target element 
    var $id = $(id); 
    if ($id.size() === 0) { 
     return; 
    } 

    // prevent standard hash navigation (avoid blinking in IE) 
    e.preventDefault(); 

    // top position relative to the document 
    var pos = $(id).offset().top; 

    // animated top scrolling 
    $('body, html').animate({scrollTop: pos}); 
}); 
+0

不起作用:( – mrbandi 2014-09-30 20:02:57

+0

@mrbandi,它适用于我在Chrome浏览器。你使用什么浏览器? – dizel3d 2014-09-30 20:03:48

+0

@mrbandi,好的,我明白了。我已经更新了我的答案对于IE来说:用'$('body,html')替换'$('body')'。 – dizel3d 2014-09-30 20:13:01