Я пытался создать следующую анимацию:
(1) У меня есть кнопка, состоящая из белого поля 100x100 поверх черного поля 100x100.
(2) При нажатии на кнопку белый ящик исчезает в черный ящик.(см. результат здесь )
// html
<div class="button">
<div class="white u-on-top"></div>
<div class="black"></div>
</div>
// css
.button {
width: 100px;
height: 100px;
margin: 10px;
position: relative;
display: inline-block;
.white {
width: 100%;
height: 100%;
background: #fff;
border: 1px solid #000;
position: absolute;
transition: .5s;
}
.black {
width: 100%;
height: 100%;
background: #000;
border: 1px solid #000;
}
}
.u-on-top {
z-index: 1;
}
.u-at-bottom {
z-index: -1;
}
// javascript
var btn = document.querySelector(".button");
var btnState = false;
btn.addEventListener("click", () => {
var btnw = btn.querySelector(".white");
if (!btnState) {
btnw.style.transform = "scale(0)";
btnState = true;
} else {
btnw.style.transform = "scale(1)";
btnState = false;
}
})
(3) То, что я безуспешно пытался сделать, это также заставить черный ящик исчезнуть в белом поле при нажатии.
Итак:
нажатие на белое поле заставляет его исчезнуть в черном поле
нажатие на черном поле делает егоисчезают в белом поле
нажатие на белое поле заставляет его исчезнуть в черном поле
и так далее ...
Моя идея состояла в том, чтобы получить эффект, изменив z-index блоков при нажатии, используя служебные классы u-on-top и u-at-bottom (например, черный ящикпосле исчезновения белого ящика), но я получил странные результаты.