@keyframes rotate-romb {
0% { transform: rotate(0deg); }
15% { transform: rotate(-15deg); }
60% { transform: rotate(90deg); }
100% { transform: rotate(0deg); }
}
@keyframes rotate-square {
0% { transform: rotate(45deg); }
15% { transform: rotate(30deg); }
60% { transform: rotate(135deg); }
100% { transform: rotate(45deg); }
}
.about-us-box:hover .animation-border-box{
animation: rotate-romb 1s ease;
}
.about-us-box:hover .about-us-border-img{
animation: rotate-square 1.5s ease;
}
Пока приложу пример на Jquery, потом на чистом Javascript, если сами не догадаетесь как переделать.
$(".about-us-border-img").bind("webkitAnimationEnd mozAnimationEnd animationEnd", function() {
$(this).removeClass("animated");
$('.animation-border-box').removeClass("animated");
// или
//$('.animation-border-box, .about-us-border-img').removeClass("animated");
})
$(".about-us-box").hover(function() {
$('.animation-border-box, .about-us-border-img', this).addClass("animated");
})
.about-us-box {
margin-top: 40px;
margin-left: 40px;
border: 1px solid black;
display: inline-block;
}
.about-us-border-img img {
width: 100px;
height: 100px;
}
@keyframes rotate-romb {
0% {
transform: rotate(0deg);
}
15% {
transform: rotate(-15deg);
}
60% {
transform: rotate(90deg);
}
100% {
transform: rotate(0deg);
}
}
@keyframes rotate-square {
0% {
transform: rotate(45deg);
}
15% {
transform: rotate(30deg);
}
60% {
transform: rotate(135deg);
}
100% {
transform: rotate(45deg);
}
}
/* ключевая привязка */
.animation-border-box.animated {
-moz-animation: rotate-romb 2s ease;
-webkit-animation: rotate-romb 2s ease;
animation: rotate-romb 2s ease;
}
.about-us-border-img.animated {
-moz-animation: rotate-square 2.5s ease;
-webkit-animation: rotate-square 2.5s ease;
animation: rotate-square 2.5s ease;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="about-us-box">about us
<div class="animation-border-box">animation-border-box</div>
<div class="about-us-border-img"><img src="https://olxua-ring08.akamaized.net/images_slandocomua/401251372_6_644x461_myagkaya-igrushka-kotik-mini-antistress-ugolek-_rev006.jpg" alt=""></div>
</div>
Суть в том, чтобы повесить событие hover
на блок и добавлять нужным элементам класс animated
. При этом вешаем события webkitAnimationEnd/mozAnimationEnd/animationEnd
, которые отслеживают конец анимации. На данный момент событие привязано только к одному элементу $(".about-us-border-img")
, так как его время анимации наибольшее, а, значит, анимация другого элемента должна подождать её.
const box = document.getElementById('about-us-box');
const el = document.getElementById('animation-box');
box.addEventListener('mouseenter', () => {
if (el.classList.contains('anim')) return;
el.classList.add('anim');
const timer = setTimeout(() => {
el.classList.remove('anim');
clearTimeout(timer);
}, 1000);
})
#about-us-box {
width:60px;
height:60px;
background: grey;
}
#animation-box {
width: 50px;
height:50px;
background: red;
}
#animation-box.anim {
animation: rotate 1s ease;
}
@keyframes rotate {
0% { transform: rotate(0deg); }
15% { transform: rotate(-15deg); }
60% { transform: rotate(90deg); }
100% { transform: rotate(0deg); }
}
<div id="about-us-box">
<div id="animation-box"></div>
</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
здравтствуйте, не могу понять почему не происходит загрузка изображения на сайт, ошибки нет, запись ссылки в базу происходит, использую функцию...