Я немного поиграл с вашим кодом.
Вы должны использовать animation-fill-mode:
forwards;
.
Тогда, я думаю, вам просто нужно поиграть сзначения skew()
(обратите внимание, что skew()
может принимать 2 значения в качестве параметров), чтобы получить значение , которое должно быть .Я вроде как пытался.
Я немного замедлил анимацию и прокомментировал animation-iteration-count: infinite;
, потому что мне стало плохо!…
(подробности см. В комментариях к коду).
.wobble-top:hover {
color: black;
/*width:160px; TAKIT: Remove that! */
animation-name: wobble-top;
animation-duration: 2s;
animation-timing-function: ease-out;
/*animation-iteration-count: infinite; TAKIT: Commented */
animation-fill-mode: forwards; /* TAKIT: Added */
}
.wobble-top {
display: inline-block;
transform-origin: 0 100%;
transform: translateZ(0);
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
background: black;
color: white;
line-height: 120px;
text-align: center;
position: absolute;
right: 0;
top: 10px;
height: 120px;
width: 120px;
border-radius: 100%; /* TAKIT: Changed here */
transition: color 1s ease; /* TAKIT: Added */
}
/* Wobble Top */
@keyframes wobble-top {
30% {
transform: skew(0, -2deg);
height: 160px;
width: 240px;
}
50% {
transform: skew(6deg, 3deg);
}
60% {
transform: skew(-2deg, -4deg);
}
70% {
transform: skew(4deg, -6deg);
width: 50%;
height: 50%;
}
80% {
transform: skew(0, 0);
width: 75%;
height: 75%;
border-radius: 20%;
}
90% {
transform: skew(0, 0);
width: 90%;
height: 90%;
border-radius: 10%;
}
100% {
transform: skew(0, 0);
width: 100%;
height: 100%;
border-radius: 0%; /* TAKIT: Added to work with the "forwards" animation-fill-mode */
}
}
<a rel="wobble-top" class="button wobble-top">Wobble Top</a>
(Улучшенный рендеринг при использовании полного фрагмента страницы)
Надеюсь, это поможет.