首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用jQuery按下next或前级按钮时,这个旋转木马(ul li)有多有生命力?

当使用jQuery按下next或前级按钮时,这个旋转木马(ul li)有多有生命力?
EN

Stack Overflow用户
提问于 2019-07-30 07:58:15
回答 1查看 284关注 0票数 0

当按下两个按钮(下一个、前一个)中的一个时,我需要旋转木马的元素来制作动画,当它们转到右边或左边并输入新元素时。

问题是,我不知道如何开始动画旋转木马。

这里我有一个JSfiddle

代码语言:javascript
复制
(function($) {
    $.fn.scrollList = function(numVisibleItems) {
        var visibleItems = numVisibleItems.visibleItems;
        var $carousel = $(this);
        var $slideItems = $("li", this);
        var $firstItem;

        var setCurrentItems = function() {
            $slideItems.hide();
            $('.current-scroll-list', $carousel).removeClass('current-scroll-list');
            $currentItems = $("li:nth-child(-n+" + visibleItems + ")", $carousel);
            $currentItems.addClass('current-scroll-list').show();
        }

        var nextItem = function() {
            $firstItem = $("li:nth-child(-n+" + visibleItems + ")", $carousel);
            $carousel.append($firstItem);
            setCurrentItems();
        }

        var previousItem = function() {
            $lastItem = $("li:nth-last-child(-n+" + visibleItems + ")", $carousel);
            $carousel.prepend($lastItem);
            setCurrentItems();
        }

        function addArrows() {
            if ($slideItems.length > visibleItems) {
                if ($($carousel).parent().find(".next").length == 0 && $($carousel).parent().find(".previous").length == 0) {
                    $carousel.parent().append('<span class="carousel-btn previous">&#10148;</span>');
                    $carousel.parent().append('<span class="carousel-btn next">&#10148;</span>');
                }
                $($carousel).siblings(".next").click(nextItem);
                $($carousel).siblings(".previous").click(previousItem);
            }
        }

        setCurrentItems();
        addArrows();
    };
})(jQuery);

$(document).ready(function() {
    $(".num-list").scrollList({
        visibleItems: $(".num-list").data("numitems")
    });
});

现在,当你按下两个按钮之一的旋转木马传递到下一个项目没有动画,我需要知道如何动画这没有插件。

我需要像这个插件这样的东西。

编辑

HTML:

代码语言:javascript
复制
<div class="wrap gradient_bg">
    <ul class="list-4 num-list" data-numitems="4">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
    </ul>
</div>

CSS:

代码语言:javascript
复制
.carousel-btn{
    position: absolute;
    background: rgba(255, 255, 255, 0.5);
    padding: 0.5em;
    z-index: 1;
    top: 5px;
    cursor: pointer;
}
.carousel-btn.previous{
    left: 0;
    padding-right: 2em;
    transform: rotate(180deg);
    top: 7px;
}
.carousel-btn.next{
    right: 0;
    padding-left: 2em;
}

ul{
    display: flex;
    justify-content: space-around;
    list-style: none;
    padding: 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 14:31:50

JSfiddle

CSS柔性盒并不是这种旋转木马的最佳解决方案,所以我已经删除了它,而且您的项目不需要隐藏,因为包装溢出是不可见的,所以请记住,我已经稍微更改了CSS。

以下是工作中的小提琴:https://jsfiddle.net/lakialekscs/2ezvyx57/

这是动画解决方案。将ul元素移动到左侧,动画完成后,重置位置并显示下一张幻灯片。这是一个粗糙的代码,但你可以从这里拿走它,使它美丽。

代码语言:javascript
复制
       $('ul').animate({
         left: $('ul').position().left - $('ul').width() + "px"
       }, 200, function() {
         $('ul').css({
            "left": "auto",
            "right": "auto"
         });
       });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57266890

复制
相关文章

相似问题

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