【问题标题】:How can i get the visible middle li in jcarousel?我怎样才能在 jcarousel 中获得可见的中间 li?
【发布时间】:2012-12-07 04:45:42
【问题描述】:

我有这种情况。中间的两个东西总是比其他的大,不知道怎么弄。
我正在使用 jcarousel。如果有其他替代 jquery 插件,将受到欢迎。

【问题讨论】:

    标签: jquery css slider jcarousel


    【解决方案1】:

    wat jQuery 替代方案 ;) 它非常简单,但很有效

    http://codepen.io/dmi3y/full/dCvkl

    好的例子在codepen上,它的核心是sn-p

    (function(){
        $('.scroll-gal').each(function(){
            var el = $(this), ul = $('ul', el);
            $('div', el).not('.vewport').click(function(){
                if(ul.is(':animated')) return;
                var dly = 200, first = $('li:first', ul), last = $('li:last', ul);
                switch($(this).css('float')){
                case 'left':
                    ul.css('left', -last.outerWidth(true)).prepend(last).animate({'left': 0}, dly);
                break;
                case 'right':
                    ul.animate({'left': -first.outerWidth(true)}, dly, function(){
                        $(this).append(first).css('left', 0)
                    });
                break;
                }
            });
        });
    })();
    

    核心思想只是繁重的 DOM 操作,我需要解释一下。

    好的,当你点击右键时发生了什么:

    ul.animate({'left': -first.outerWidth(true)}, dly, function(){
        $(this).append(first).css('left', 0)
    });
    

    首先将整个ul 容器向右移动,并在动画结束时将第一项放入列表中,将其放在最后。这很容易。

    左侧动画有点复杂:

    ul.css('left', -last.outerWidth(true)).prepend(last).animate({'left': 0}, dly);
    

    在第一点,ul 容器向右(负向左)快速移动,然后立即将最后一个项目放在第一位,然后在这个动画之后向左移动。

    你看,引擎盖下有这么多调用,这就是它很重的原因。但它会在大多数实现中顺利运行,尽管它具有巨大的优化潜力。

    【讨论】:

    • 如果您要回答这个问题,请将您的答案作为答案发布。不要简单地链接到外部网站。
    • @DavidThomas,实际上这是我的代码,一个替代方案,但你是对的
    • 我认为这是您的代码,但 Stack Overflow 上的答案应该是自包含的(尽管无论如何都链接到参考资料和其他地方的演示);这样,当外部网站被移动、关闭或只是屈服于链接腐烂时,答案仍然有用。
    • 不客气!而且我刚刚删除了我的反对票和赞成票,因为您将答案内联。 =)
    猜你喜欢
    • 2012-12-16
    • 2015-05-19
    • 1970-01-01
    • 2021-03-28
    • 2011-06-04
    • 2011-10-27
    • 2017-05-25
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多