javascript - 如何使用velocity js创建3D显示和隐藏动画

标签 javascript jquery 3d show-hide velocity.js

场景

我想隐藏所有元素,然后显示刚刚隐藏的集合中的一个特定元素。这必须在 3D 中发生。

问题

隐藏后,只有最后一个元素有效,并且我没有收到任何错误。

当我使用“hide()”时,以下内容有效;

$(document).on('click', '.navigation_but', function(){
        var nav = $(this).attr('data-nav');
        $(".article_sd").hide();
            $('.'+nav+'').velocity("transition.flipXIn");
    });

但这不起作用,我不知道我做错了什么。

$(document).on('click', '.navigation_but', function(){
            var nav = $(this).attr('data-nav');
            $(".article_sd").velocity("transition.flipXOut");
                $('.'+nav+'').velocity("transition.flipXIn");
        });

标记如下。

HTML

<小时/>
<header>
<nav class="navigation_but" data-nav="article_sd_first">First</nav>
<nav class="navigation_but" data-nav="article_sd_second">Second</nav>
<nav class="navigation_but" data-nav="article_sd_third">Third</nav>
<nav class="navigation_but" data-nav="article_sd_fourth">Fourth</nav>
</header>
<section>
<article class="article_sd article_sd_first" style="background-color:rgba(0,85,0,1)"></article>
<article class="article_sd article_sd_second" style="background-color: rgba(255,255,153,1)"></article>
<article class="article_sd article_sd_third" style="background-color: rgba(153,102,204,1)"></article>
<article class="article_sd article_sd_fourth" style="background-color: rgba(51,51,102,1)"></article>
</section>

还有一些CSS

<小时/>
<style>
    .article_sd { height:100px;}
    </style>

或者如果可能的话,将这种奇特的效果放在适当的位置,如本演示所示;

https://codyhouse.co/demo/page-scroll-effects/opacity.html

$.Velocity
    .RegisterEffect("rotation", {
        defaultDuration: 1,
        calls: [ 
            [ { opacity: '0', rotateX: '90', translateY: '-100%'}, 1]
        ]
    });

$.Velocity
.RegisterEffect("rotation.scroll", {
    defaultDuration: 1,
    calls: [ 
        [ { opacity: '0', rotateX: '90', translateY: '0'}, 1]
    ]
});

最佳答案

我认为问题出在这里

$(document).on('click', '.navigation_but', function(){
        var nav = $(this).attr('data-nav');
        $(".article_sd").velocity("transition.flipXOut");
            $('.'+nav+'').velocity("transition.flipXIn");
    });
当调用第二个速度函数时,

variable nav 元素仍然具有动画效果。我们不希望这样。

我认为您可以尝试两个至少两个选项。

1) 在开始新动画之前停止较早的动画。 $('.'+nav+'').velocity('stop').velocity("transition.flipXIn");

2) 使用速度/jquery 样式回调在第一个动画之后制作第二个动画。

$(".article_sd").velocity("transition.flipXOut", function () {
  $('.' + nav).velocity('transition.flipXIn');
});

请告诉我这是否有帮助。

关于javascript - 如何使用velocity js创建3D显示和隐藏动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604291/

相关文章:

javascript - 如何在 jquery 中使用函数调用创建缩放效果

javascript - 根据属性出现将数组拆分为新数组

matlab - 如何统计测试3D模型的准确性?

3d - 四元数在 3d 模型上的加、减、除运算

javascript - 从数据快照中检索第一个元素

javascript - JQuery 事件仅触发一次

jquery - 如何通过从另一个弹出窗口传递的 id 制作弹出窗口显示列表?

JQuery SerialScroll Tabs 底部边框问题

math - 将深度纹理样本转换为距离

javascript - 从字符串中获取参数