Я сжал эффект css, который мне нравится для некоторых всплывающих модальных окон в моем приложении, но у меня возникают проблемы, когда модальные окна создаются в DOM в JS.
Когда пользователь нажимает кнопку, чтобы «открыть» модальное окно, он должен плавно переходить, увеличиваясь в размере (увеличивая масштаб). Когда это просто html и css, это работает так, как нужно, однако, когда это событие щелчка в JS, которое я написал, модальное окно просто внезапно появляется и исчезает (если я использую 'display: block'), или он очень резкий, или я вообще не могу заставить его работать (если я использую 'visibility: visible').
Мне кажется, что он не рассматривает это как «переход», а эффект не применяется, или я каким-то образом пытаюсь передать размытый фон, а не модальный элемент.
Это мой css .....
.modal {
display: none; <-- added to flip between states, might be cause of problem
height: 100vh;
width: 100%;
position: fixed;
top: 0;
left: 0;
background-color: rgba($color-black, .8);
z-index: 999999;
opacity: .98;
transition: all .3s;
@supports(-webkit-backdrop-filter: blur(10px)) or (backdrop-filter:blur(10px)){
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
background-color: rgba($color-black, .3);
}
&__content {
@include absCenter;
width: 75%;
background-color: $color-white;
box-shadow: 0 2rem 4rem rgba($color-black, .2);
border-radius: 3px;
display: table;
overflow: hidden;
opacity: 1;
transform: translate(-50%, -50%) scale(1);
transition: all .5s .2s;
}
Пожалуйста простите (очень) псевдокод для JS, но на самом деле код - это спагетти, как мама делала .....
dbRecord.forEach(el => {
const button = document.createElement('button')
button.innerHTML = <populate some html with db info>
button.addEventListener('click', (e) => {
modal.style.display = 'block'
modal.innerHTML = <set attributes from parent element>
document.querySelector('.modalCloseButton').addEventListener('click') => {
modal.style.display = 'none'
}
...
}
}
Как я могу сделать этот переход плавным, а не резким?