2014-01-17 2 views
13

Сегодня я пытался реализовать на моем сайте animate.cssAnimate.css в парении

Но я хотел, чтобы убедиться, что «эффект активируется в: парить Так что я использовал JQuery для этого

Кодекса is:

$(".questo").hover(function (e) { 
    $(this).toggleClass('animated shake', e.type === 'mouseenter'); 
}); 

Проблема в том, что как только вы удалите мышь, эффект будет прерван. Он может нанести «эффект» даже без эффекта зависания, как только он начнется?

Спасибо всем заранее

+0

Событие наведения активируется, когда вы вводите/оставляете элемент, чего вы пытаетесь достичь? –

+0

Спасибо за ваш ответ: когда я удаляю эффект мыши, резко останавливается, я хотел бы как минимум закончить вместо действия – user3198605

ответ

8

Смотрите этот вариант (более интерактивный):

$(".myDiv").hover(function(){ 
    $(this).addClass('animated ' + $(this).data('action')); 
}); 
$(".myDiv").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",function(){ 
    $(this).removeClass('animated ' + $(this).data('action')); 
}); 

http://jsfiddle.net/DopustimVladimir/Vc2ug/

+0

Ты отличный, этот эффект намного лучше и полезнее спасибо – user3198605

0

Я считаю, что вы говорите, анимация останавливается, как только листья мыши, и вы пытаетесь достичь анимации, которая когда-то начали по наведению бы остаться.

В этом случае вы должны установить счетчик итераций анимации в бесконечность. Пожалуйста, добавьте

animation-iteration-count:infinite 

к классу анимации в таблице стилей.

+0

или добавить число вместо бесконечного, чтобы указать количество раз – Spdexter

+0

Вы проверили продолжительность анимации : property - похоже, вам, возможно, придется изменить его на 2s или все, что вы пытаетесь достичь. – Spdexter

+0

Спасибо за ваш ответ, я создал jsfiddle, чтобы помочь мне лучше Вы можете написать их в коде, чтобы увидеть и понять эффект? – user3198605

1

Вместо того, чтобы использовать toggleClass, измените свой код, добавив класс в наведение и зацепив конец анимации css3, чтобы закончить и удалить класс.

Код:

$(".questo").hover(function (e) { 
    $(this).addClass('animated shake'); 
}); 

$(".questo").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function() { 
    $(this).removeClass('animated shake'); 
}); 

Демо: http://jsfiddle.net/IrvinDominin/xxJ7K/1/

+0

Perfect .. thx снова! – user3198605

+0

@ user3198605 добро пожаловать –

+0

@ user3198605 Почему вы удалили chackmark? Мое решение отвечает на ваш вопрос, недавно принятый ответ - это что-то еще (и скопировано из моего решения) –

4

Вместо того, чтобы переключать классы по наведению, добавить их на мыши войти, как этот

$(".questo").mouseEnter(function(event) { 
    $(this).addClass("animated shake"); 
}); 

Затем вы можете удалить классы, когда завершение анимации

$(".questo").on("webkitAnimationEnd mozAnimationEnd oAnimationEnd animationEnd", function(event) { 
    $(this).removeClass("animated shake"); 
}); 

Я бы сделал это на мыши, а не наведите курсор мыши, потому что вы можете вызвать анимацию, когда мышь выйдет из элемента.

Смотрите это jsFiddle для примера

0

Предполагая, что вы хотите добавить класс, когда мышь ввести и удалить класс, когда мышь оставить ....

Вы можете попробовать это:

$(".questo").hover(function (e) { $(this).addClass('animated shake'); }, function(e){ $(this).removeClass('animated shake'); });

23

В файле CSS вы можете просто добавить:

.questo:hover { 
    -webkit-animation: shake 1s; 
    animation: shake 1s; 
} 

Прелесть этого решения заключается в том, что она не требует JavaScript.Для справки посмотрите на это page

+1

Это замечательно, за исключением того, что в тот момент, когда вы перестаете парить , анимация будет отключена. –

+1

@MikeLambert вы можете сделать анимацию «бесконечной», добавив ключевое слово 'infin' рядом с' shake': '-webkit-animation: shake infin 1s; анимация: встряхните бесконечные 1s, 'таким образом она не будет обрезана, если вы не удалите дом из элемента. –

Смежные вопросы