CSS Анимации применяются только после показа мод bootstrap - PullRequest
0 голосов
/ 27 марта 2020

Я заметил, что при использовании Bootstrap Модальные , если у меня есть CSS Анимации для элементов внутри моего модала, эти анимации не применяются до тех пор, пока не появится модальное окно. Это действительно здорово, но я не могу понять, что вызывает анимацию. более того, если я закрою модальное и снова открою. анимации сбрасываются и запускаются снова.

Я почти уверен, что это Bootstrap вещь, но я не могу найти какую-либо документацию конкретно об этом.

Причина, по которой я интересует то, что я хотел бы воспользоваться этим путем повторного запуска анимации. и имеет смысл попытаться подключиться к существующей функции Bootstrap, если это возможно. (это, и мне просто любопытно)

  • Это действительно Bootstrap "особенность"?
  • Или это CSS вещь, где анимация не применяется, пока элементы не отображаются?

.animate-box {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 0s;
  animation-fill-mode: both;
}

@keyframes example {
  from {
    background-color: yellow;
  }
  to {
    background-color: blue;
  }
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">


<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong">
  Launch demo modal
</button>


<!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-body">
        <div class="animate-box">
        </div>
      </div>
    </div>
  </div>
</div>


<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

1 Ответ

1 голос
/ 27 марта 2020

См. CSS Уровень анимации 1 (ссылка на @TemaniAfif для ссылки)

Установка свойства display на none означает, что любая работающая анимация, примененная к элементу, будет прервана. его потомки. Если у элемента нет отображения none, обновление display до значения, отличного от none, запустит все анимации, примененные к элементу с помощью свойства animation-name, а также все анимации, примененные к потомкам с отображением, отличным от none.

input + label:before {content:'Show'}
input:checked + label:before {content:'Hide'}

input:checked ~ .animate-box {display:block}


.animate-box {
  display: none;
  width: 100px;
  height: 100px;
  background-color: yellow;
  animation: example 3s both;
}

@keyframes example {
  to {
    background-color: blue;
  }
}
<input type="checkbox" id="sw">
<label for="sw"></label>

<div class="animate-box">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...