通过鼠标悬停和 animate.css 为元素设置动画

Animate element by mouseover and animate.css

是否可以通过鼠标悬停和 animate.css 对元素进行动画处理?

$(document).ready(function(){
    $("p").mouseover(function(){
        $("p").css("background-color", "red");
        $("#mystyle").animateCss('bounce');
    });
    $("p").mouseout(function(){
        $("p").css("background-color", "gray");
    });
});

我试过了,但有问题。 https://jsfiddle.net/f79b7033/

我不熟悉 animate.css 但打开控制台时出现错误:

Uncaught TypeError: $(...).animateCss is not a function
    at HTMLParagraphElement.<anonymous> ((index):53)
    at HTMLParagraphElement.dispatch (jquery-3.1.1.js:5201)
    at HTMLParagraphElement.elemData.handle (jquery-3.1.1.js:5009)

所以我查看了 animate.css 的文档并发现了这个:

$('#yourElement').addClass('animated bounceOutLeft');

添加了它,这是你的 fiddle - 看起来它正在工作:

https://jsfiddle.net/f79b7033/3/

编辑: Dekel 指出上述错误是由于未扩展 Jquery 引起的(有关如何执行此操作,请参阅他的回答)。这是非jQuery版本。

根据 documentation in animation.css,您可以使用以下方式扩展 jQuery:

$.fn.extend({
    animateCss: function (animationName) {
        var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
        this.addClass('animated ' + animationName).one(animationEnd, function() {
            $(this).removeClass('animated ' + animationName);
        });
    }
});

而且您没有在代码中添加它。

这是一个工作示例(包括上面的代码):
https://jsfiddle.net/dekelb/9jaq7fhr/