JQuery - 一个连续的滚动导航,除了它不太管用

标签 jquery html css

我正在尝试构建一个永远不会结束的导航窗口 - 主导航区域内的每个链接都是一个 block ,有滚动按钮​​,当您向上滚动时,从顶部滚动的元素被分离并重新- 附在底部。同样,如果您向下滚动,同样的事情会反过来发生,底部元素消失并重新出现在顶部。

我可以通过分离和附加来完成这项工作,但它缺乏技巧 - 所以它需要动画。问题是,无论我尝试为它制作动画,都会导致菜单很快搞砸。我正在为每个元素制作“顶部”CSS 动画以提供视觉效果,然后分离对象,重置将 CSS“顶部”设置为零,并重新附加对象。

从我使用 firebug 的测试来看,'top' 值似乎没有被重置,这导致整个菜单出现问题......

这是我正在使用的基本设置的 fiddle - 减去所有其他对你不重要的样式:

http://jsfiddle.net/CSVt6/

下面是代码的要点:

<div id='navigation'>
    <div id='scrollUp'>UP</div>
    <ul>
        <li>Nav Item 1</li>
        <li>Nav Item 2</li>
        <li>Nav Item 3</li>
        <li>Nav Item 4</li>
        <li>Nav Item 5</li>
    </ul>
    <div id='scrollDown'>DOWN</div>
</div>

JQuery(准备好文档):

var itemHeight = $("#navigation ul li:first").outerHeight();

$("#scrollUp").click(function() {
  navScrollUp();
});

$("#scrollDown").click(function() {
  navScrollDown();                       
});


function navScrollUp() {
    $("#navigation ul li").animate({top: "-="+itemHeight});
    slice = $("#navigation ul li:first").detach();
    $("#navitation ul li").css("top","0px");
    $("#navigation ul").append( slice );
}

function navScrollDown() {
    $("#navigation ul li").animate({top: "+="+itemHeight});
    slice = $("#navigation ul li:last").detach();
    $("#navitation ul li").css("top","0px");
    $("#navigation ul").prepend( slice );    
}

任何人都可以建议我在这里做错了什么吗?

最佳答案

看看这个:

http://jsfiddle.net/CSVt6/10/

我只让它适用于 up 但想法是一样的。我没有对每个 li 进行动画处理,而是将其更改为对 ul 进行动画处理。不过,根本的变化是我克隆了要删除的元素。为了实现最流畅的滚动,您确实需要一个元素的副本,以便它开始出现在底部,同时它仍在顶部消失。

在第一个动画完成之前,您还需要处理多次点击,但这应该是一个好的开始。

关于JQuery - 一个连续的滚动导航,除了它不太管用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431853/

相关文章:

javascript - VBA/次要 HTML/Javascript : Click a tricky hidden checkbox in a report

html - 悬停 DIV 或其他元素时的不透明度

javascript - 捕获 iframe jQuery 中的所有事件并复制

jquery - 使用 jquery 查找文本框是否被禁用或未被禁用

javascript - 如何定位 ajax 中类中正在单击的元素

javascript - 是否可以只提取可滚动 div 的可见内容?

html - 如何增加自定义光标图像的大小?

html - 段落中的不透明度变化会改变文本不透明度和背景不透明度

标签格式中的 HTML 和 CSS 标签

javascript - 使用 JQuery next() 和 find() 在悬停的 div 上找到下一个最接近的类给定元素并显示它