остановить анимацию щелчка ключевого кадра css на луне, как фазы луны - PullRequest
0 голосов
/ 08 октября 2018

как остановить анимацию переворота ключевых кадров CSS на Луне

У меня есть лунная подсветка в процентах. Я хочу отображать лунный свет на лунной основе при освещении.лунная освещенность от одной до ста (1-100%) и лунный свет должен быть 1-100% на луне

для exe, когда лунная освещенность составляет 10% и белый цвет (яркость луны) на луне должен составлять 10%

здесь html и css код луны

.moon {
  width: 100px;
  height: 100px;
  border: 2px solid #ffffff;
  border-radius: 50%;
  overflow: hidden;
  position: relative;
  background-color: #fff;
  -webkit-transform: translateZ(0);
          transform: translateZ(0);
}
.moon::before {
  content: " ";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  background-color: #222;
  width: 50%;
  height: 100%;
  -webkit-animation: flip 2s 1s steps(2) infinite alternate;
          animation: flip 2s 1s steps(2) infinite alternate;
}

.disc {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  width: 100%;
  height: 100%;
  -webkit-animation: rotate 4s linear infinite;
          animation: rotate 4s linear infinite;
}
.disc::before, .disc::after {
  content: " ";
  display: block;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transition: -webkit-transform 4s;
  transition: transform 4s;
  transition: transform 4s, -webkit-transform 4s;
  position: absolute;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}
.disc::before {
  background-color: #222;
}
.disc::after {
  background-color: #fff;
  -webkit-transform: rotateY(180deg);
          transform: rotateY(180deg);
}

@-webkit-keyframes rotate {
  0% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg);
  }
  100% {
    -webkit-transform: rotateY(360deg);
            transform: rotateY(360deg);
  }
}

@keyframes rotate {
  0% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg);
  }
  100% {
    -webkit-transform: rotateY(360deg);
            transform: rotateY(360deg);
  }
}
@-webkit-keyframes flip {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
  }
}
@keyframes flip {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
  }
}
html, body {
  height: 100%;
  width: 100%;
}

body {
  background-color: #222222;
  text-align: center;
  color: #ffffff;
  font-family: 'Fira Mono', monospace;
  display: flex;
  justify-content: center;
  align-items: center;
  letter-spacing: .1em;
}
<div class="moon">
  <div class="disc"></div>
</div>

1 Ответ

0 голосов
/ 07 ноября 2018

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

  1. Установить animation-fill-mode для .disc на forwards
  2. Установить animation-iteration-count для .disc на 1
  3. Измените элемент rotate ключевых кадров, чтобы он поворачивался только на 180 градусов вместо 360.

Вот кодовая ручка , показывающая полное решение.Я удалил некоторые ненужные анимации и удалил CSS без префикса для ясности / краткости.

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