首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery UL滚动

问Jquery UL滚动
EN

Stack Overflow用户
提问于 2012-02-21 21:09:18
回答 3查看 5.7K关注 0票数 1

我正在尝试使用Jquery在UL列表上滚动,并使用两个跨度来上下移动。它对一个li子级有效,但是对于一个动态填充的ul又如何呢?谢谢,我完全迷路了

代码语言:javascript
复制
 $('span.scrollDown').click(function () {
        $('.liste-grostitres li:first-child').css('margin-top', 0 - $('.liste-grostitres li').outerHeight());
        $('.liste-grostitres').css('overflow', 'hidden');
    });

    $('span.scrollUp').click(function () {
        $('.liste-grostitres li:first-child').css('margin-top', 0);
        $('.liste-grostitres').css('overflow', 'visible');
    });


<div id="grostitres">
    <div class="gInner">
    <span class="scrollUp"></span>
    <span class="scrollDown"></span>
    <div class="scrollable" id="divlist" runat="server">   
      <ul>
          <li></li>
          <li></li>
          ...
      </ul>
    </div>              
    </div>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-21 22:09:48

这里有一个滑动开关的小提琴:http://jsfiddle.net/RMQLM/

还有工作代码示例:

HTML:

代码语言:javascript
复制
<div id="up">up</div>
<div id="list">
<ul>
    <li>foo1</li>
    <li>bar1</li>
    <li>foo2</li>
    <li>bar2</li>
    <li>foo3</li>
    <li>bar3</li>
    <li>foo4</li>
    <li>bar4</li>
    <li>foo5</li>
</ul>
</div>
<div id="down">down</div>

CSS:

代码语言:javascript
复制
div#list {
    height: 93px;
    overflow: hidden;
    border: 1px solid red;
}

jQuery:

代码语言:javascript
复制
var listcount = $('li').size();
var cli = 1;
$('#down').click(function() {
    if (cli < listcount) {
        $('li:nth-child(' + cli + ')').slideToggle();
        cli++;
    }
});
$('#up').click(function() {
    if (cli > 1) {
        cli--;
        $('li:nth-child(' + cli + ')').slideToggle();
    }
});
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 21:46:32

将您的UL设置为position: relative;并设置为top: 0;。

添加一个函数来处理动画:

代码语言:javascript
复制
var scroll_ul = function(offset) {
    // Target the UL to scroll
    var to_scroll = $('#divlist').find('ul');

    // Store the distance to scroll (assumes LIs are all equal height)
    var scroll_distance = $('#divlist').find('li').outerHeight(true);

    // Animate
    to_scroll.stop().animate({ top: '-=' + (offset * scroll_distance) });
};

然后更改您的点击处理程序,如下所示:

代码语言:javascript
复制
$('span.scrollDown').click(function() {
    scroll_ul(1);
});

$('span.scrollUp').click(function() {
    scroll_ul(-1);
});

如果您敲击scrollDown/scrollUp按钮,您可能会遇到奇怪的滚动距离。这时您应该研究一下jQuery的.one()函数。

票数 1
EN

Stack Overflow用户

发布于 2012-02-21 21:14:43

我认为将整个UL动画化会比单个LI更有效率。您已经在DIV中包装了UL,那么为什么不相对于包装器来动画UL呢?这将与在UL中设置单个LI动画的方式相同,因此您不需要重新发明轮子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9378169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档