【问题标题】:Save completed css animation in class在课堂上保存完成的css动画
【发布时间】:2021-05-19 20:31:40
【问题描述】:

您好,我有一个用于链接悬停的 css 动画,我希望能够将动画的完成状态保存在 css 类中,并在点击时将其添加到链接中


.link {
    cursor: pointer;
    position: relative;
    white-space: nowrap;

}

.link::before,
.link::after {
    position: absolute;
    width: 100%;
    height: 1px;
    background: currentColor;
    top: 100%;
    left: 0;
    pointer-events: none;
}

.link::before {
    content: '';
}


.link--elara {
    font-family: aktiv-grotesk-extended, sans-serif;
    font-size: 1.375rem;
}

.link--elara::before {
    transform-origin: 50% 100%;
    transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
    clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}

.link--elara:hover::before {
    transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
    clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}

.link--elara span {
    display: inline-block;
    transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}

.link--elara:hover span {
    transform: translate3d(0, -2px, 0);
}


我尝试过其他解决方案,例如animation-fill-mode: forwards; 和其他解决方案here,但我没有任何运气..

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: javascript html css css-animations


    【解决方案1】:

    下面的代码可能按照你想要的方式工作,但它不是“将完成的动画保存在一个类中”。

    相反,它会在单击时向按钮添加一个类clicked。此类具有完成的翻译,该翻译也发生在悬停时,并在光标退出元素时接管。

    $(document).ready(function(){
            $(".link--elara").click(function(e){
                $(".link--elara").addClass("clicked");
        });
    });
    .link {
        cursor: pointer;
        position: relative;
        white-space: nowrap;
    
    }
    
    .link::before,
    .link::after {
        position: absolute;
        width: 100%;
        height: 1px;
        background: currentColor;
        top: 100%;
        left: 0;
        pointer-events: none;
    }
    
    .link::before {
        content: '';
    }
    
    
    .link--elara {
        font-family: aktiv-grotesk-extended, sans-serif;
        font-size: 1.375rem;
    }
    
    .link--elara::before {
        transform-origin: 50% 100%;
        transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
        clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
    }
    
    .link--elara:hover::before,
    .clicked::before {
        transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
        clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
    }
    
    .link--elara span {
        display: inline-block;
        transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
    }
    
    .link--elara:hover span,
    .clicked span {
        transform: translate3d(0, -2px, 0);
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="link">
        <div class="link--elara">
            <span>Click me!</span>
        </div>
    </div>

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多