Пузырь взорвать вид анимации при использовании javascript / css - PullRequest
0 голосов
/ 13 июня 2018

Я пытался заставить пузырь взорваться как анимация.Нечто похожее на это http://taotajima.jp/works/the-9d-project/. Когда вы нажимаете кнопку воспроизведения, вы можете увидеть пузырьковую анимацию.Я думаю, что они сделали анимацию в canvas.Я пытаюсь сделать это с помощью свойства асимметрии CSS, но не могу получить его так, как должно быть.

fiddle

.wobble-top:hover {
    width:160px;
    animation-name: wobble-top;
    animation-duration: 1s;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
}

.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;
    height:120px;
    width:120px;
    line-height:120px;
    text-align:center;
    position:absolute;
    right:0;
    top:10px;
    transition: width 0.3s ease-in-out;
    border-radius: 60px
}

/* Wobble Top */
@keyframes wobble-top {
  16.65% {
    transform: skew(-12deg);
  }
  33.3% {
    transform: skew(10deg);
    border-radius:30px
  }
  49.95% {
    transform: skew(-6deg);
    width:50%;
    height:50%;
        border-radius:20px
  }
  66.6% {
    transform: skew(4deg);
        border-radius:10px;
    width:70%;
    height:70%;
  }
  83.25% {
    transform: skew(-2deg);
    width:80%;
    height:80%;
            border-radius:0px
  }
  100% {
    transform: skew(0);
    width:100%;
    height:100%;
  }
}
<a rel="wobble-top" class="button wobble-top" style="
    
">Wobble Top</a>

1 Ответ

0 голосов
/ 13 июня 2018

Я немного поиграл с вашим кодом.

Вы должны использовать 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>

(Улучшенный рендеринг при использовании полного фрагмента страницы)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...