当前位置: 首页 > 知识库问答 >
问题:

光滑旋转木马+velocity.js

袁骏祥
2023-03-14

我想把velocity.js效果结合到Slick Carousel插件中。

slick:http://kenwheeler.github.io/slick/velocity:http://julian.com/research/velocity/

这很管用,但有一个奇怪的副作用:

<script>
        $(function() {
            $('.teaser').on('init', function(event, slick){
                createSequence(0);
            });             
            $('.teaser').on('beforeChange', function(event, slick, currentSlide, nextSlide){
                createSequence(nextSlide);
            });             
            $('.teaser').slick({
                autoplay: true,
                autoplaySpeed: 10000,
              });               
            function createSequence(slideId) {
                var $e = $('.slick-slide[data-slick-index='+slideId+']');
                $e.velocity("stop");
                var mySequence = [
                    { e: $e.find('.teaserImg'), p: "transition.swoopIn", o: { duration: 500, sequenceQueue: false  } },                     
                    { e: $e.find('.boxTitle'), p: "transition.bounceUpIn", o: { duration: 500, sequenceQueue: false } },
                    { e: $e.find('.projectTitle'), p: "transition.bounceLeftIn", o: { duration: 1000, sequenceQueue: false  } },
                    { e: $e.find('.teaserTitle'), p: "transition.bounceRightIn", o: { duration: 1000, sequenceQueue: false  } },                        
                    { e: $e.find('.teaserText'), p: "transition.fadeLeftBigIn", o: { duration: 500, sequenceQueue: false } },
                    { e: $e.find('.teaserBtn'), p: "transition.fadeRightBigIn", o: { duration: 1000, sequenceQueue: false  } }
                ];
                $.Velocity.RunSequence(mySequence);
            }
        });
    </script>

这是我现在得到的密码。所以我做了一个效果序列,它是用钩子beforeChange触发的。

当我转到下一张幻灯片时,它起作用了。但当我在幻灯片之间快速移动,一个序列还在播放时,所有的东西都变得乱七八糟,飞到屏幕上。

所以我要确保当前序列在执行下一个之前停止。这就是我不知道怎么做的地方。

有什么提示吗?

共有1个答案

齐弘业
2023-03-14

使用$e.velocity(“stop”,true);清除动画队列并反转动画。

我所做的是在每个元素上添加一个css类(.animated)来清除和重置动画。

function createSequence(slideId) {
                var $e = $('.slick-slide[data-slick-index='+slideId+']');

                $e.find('.animated').each(function (index, element) {
                    $(element).velocity('stop', true);
                    $(element).velocity('reverse', {duration: 1});
                });

                var mySequence = [
                    { e: $e.find('.teaserImg'), p: "transition.swoopIn", o: { duration: 500, sequenceQueue: false  } },                     
                    { e: $e.find('.boxTitle'), p: "transition.bounceUpIn", o: { duration: 500, sequenceQueue: false } },
                    { e: $e.find('.projectTitle'), p: "transition.bounceLeftIn", o: { duration: 1000, sequenceQueue: false  } },
                    { e: $e.find('.teaserTitle'), p: "transition.bounceRightIn", o: { duration: 1000, sequenceQueue: false  } },                        
                    { e: $e.find('.teaserText'), p: "transition.fadeLeftBigIn", o: { duration: 500, sequenceQueue: false } },
                    { e: $e.find('.teaserBtn'), p: "transition.fadeRightBigIn", o: { duration: 1000, sequenceQueue: false  } }
                ];
                $.Velocity.RunSequence(mySequence);
        }

来源:velocity.js stop命令

 类似资料:
  • 我有一些问题添加滑块lightbox到滑块,它没有打开弹出窗口。在remove itemSelector img之后,它打开弹出窗口,但是src未定义。有什么提示吗? JS: HTML

  • 所以基本上我想跟滑头做点这样的事...我想有正常的幻灯片,但事情是,是,我想有行动呼吁(按钮)在他们。这通常很容易将按钮与幻灯片一起放入,但有一个溢出:旋转式播放器上隐藏的样式无法取下,否则其他幻灯片会显示出来。我想知道如何才能做到这一点(按钮稍微往外走而不被切断)。 编辑:添加边框到旋转木马,这是真正的问题,我有...维护边框并使底部与边框重叠

  • 我想让用户能够滑动轮播如果在一个ipad的肖像模式,而不是滑动如果在横向模式。 我遵循这个例子是为了改变基于肖像/风景的旋转木马的设置,但它只在某种程度上起作用: 下面的代码适用于页面加载,但不适用于方向更改。 我想我必须重新初始化旋转木马,但我不知道如何。我试着,并用新的设置重新初始化它,但似乎不起作用。

  • 我想在两个光滑的carousel项之间添加空间,但不想要带填充的空间,因为这会减少我的元素大小(我不想那样)。 null null 不知何故,我从两边都得到了空间,我正试图消除它。

  • 我有多个猫头鹰旋转木马设置在我的主页。我有第一个(关于免费送货的)设置为滑速10000。因为你可以看到所有的幻灯片都以相同的速度变化。 这有什么不起作用的原因吗?我做错什么了吗?

  • 我有一个简单的codepen设置,我认为应该作为一个滑块工作。它包括bootstrap.css、jquery.js和bootstrap.js。我不知道缺少什么是阻止js滑动。 HTML CSS