У меня есть список, который находится в контейнере, в котором периодически будут удаляться / добавляться элементы из нижней части контейнера. Сам контейнер прикреплен к левому нижнему углу области просмотра.
Когда добавляется новый ребенок, я бы хотел, чтобы все существующие дети скользили вверх, а когда ребенок удалялся, все братья и сестры над ним скользили вниз.
Я не могу понять, какое свойство transition
включено для элементов списка. Когда я применяю transition: all ...;
к .toast
, он правильно оживляет скольжение при добавлении ребенка, но не при удалении ребенка.
Очевидно, что transition: all
работает, свойство можно анимировать, но я не могу понять, какое это свойство. Я пробовал transition: bottom
, height
, margin-bottom
, и пару других - но они не достигают того, что я ищу. Я надеюсь избегать использования transition: all
и хотел бы применить transition
только к необходимому свойству.
РЕДАКТИРОВАТЬ Для ясности: я не спрашиваю об анимации анимации входа / выхода отдельного тоста (то есть того, который добавляется / удаляется), а о том, как управлять движением другие тосты, которые уже присутствуют и перевариваются, чтобы освободить место для добавления / заполнения для удаления.
Вот примерный набросок кода.
let counter = 3;
let toasterEl = document.getElementById("toaster");
const newToast = () => toasterEl.insertAdjacentHTML('beforeend',`<div class="toast">${++counter}</div>`);
const removeToast = () => toasterEl.removeChild(toasterEl.childNodes[toasterEl.childNodes.length - 1])
#toaster {
position: fixed;
left: 0;
bottom: 0;
flex-direction: column;
max-width: 100px;
min-height: 100px;
}
.toast {
transform-origin: center bottom;
transition: ??? .5s linear;
animation: toast-entry .5s ease-in;
background-color: tan;
color: black;
padding: 10px;
margin: 10px;
width: 100%;
text-align: center;
}
@keyframes toast-entry {
0% {
transform: rotateX(90deg);
opacity: 0.5;
}
50% {
transform: rotateX(0deg);
opacity: 1;
}
}
<button onclick="newToast()">Make toast</button>
<button onclick="removeToast()">Burn toast</button>
<div id="toaster">
<div class="toast">1</div>
<div class="toast">2</div>
<div class="toast">3</div>
</div>