javascript - 如果主体具有类,则触发 Greensock 动画

标签 javascript jquery css gsap

我有一类 .header-is-active适用于 <body>用户滚动时标记。

我希望在添加类时触发动画,然后在删除类时反向运行动画。

除动画外,一切都按预期发生。我正在使用 jQuery 和 Greensock 来实现一切。

这是我目前拥有的:

$(function() {

    var body = $('body');
    var trigger = $('.trigger');
    var tween = TweenMax.to(trigger, 0.5, {css:{height: "100vh"},});

    $(window).scroll(function() {
        var scroll = $(window).scrollTop();

        if (scroll >= 50) {
            body.addClass('header-is-active');
            tween();
        } else {
            body.removeClass('header-is-active');
        }
    });
});

我遇到的问题是补间值 height: 100vh无论 .header-is-active 都被应用或不。有什么东西不见了吗?

最佳答案

$(window).scroll() 函数的末尾,试一试:

$(window).scroll(function() {
    var scroll = $(window).scrollTop();

    if (scroll >= 50) {
        body.addClass('header-is-active');
        tween();
    } else {
        body.removeClass('header-is-active');
    }

    // jQuery way
    if(body.hasClass('header-is-active')) {
        // Run animation
    } else {
        // Run reverse animation
    }

    // Non-jQuery way (just for reference)
    var body = document.body;
    if(body.classList.contains('header-is-active') {
        // Run animation
    } else {
        // Run reverse animation
    }

});

如果它不起作用,因为它是异步运行的,您可以在上面添加一个 setTimeout() 以便在您的函数之后调用它。它应该看起来像这样

setTimeout(function() {
    if(body.hasClass('header-is-active')) {
        // run animation
    } else {
        // run reverse
    }
}, 0);

关于javascript - 如果主体具有类,则触发 Greensock 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753602/

相关文章:

html - 使用 href 的 CSS 标签

javascript - 我可以从浏览器中运行的 JavaScript 直接连接到 Redis 服务器吗?

javascript - Angular-UI Datepicker 最小日期设置与另一个日期

jQuery 附加元素 - 文本不适合

javascript - 在 JavaScript 中使用父函数

css - 如何在 react 组件上添加多个类名

javascript - 最佳文件上传方式

javascript - 如何在Javascript中获取模型的属性?

jquery - 由于新的 IE 更新,Internet Explorer 在关闭 jQuery UI 对话框时崩溃 (KB2761451)

css - 如何让一个带有 z-index 的 div 在悬停时覆盖另一个 div