#javascript #modal-dialog #z-index
Вопрос:
Я хочу, чтобы модал находился в центре страницы и появлялся поверх .main, когда я активирую .hidden класс с помощью javascript. Но когда я включаю .hidden класс,. main опускается, даже несмотря на то, что я присвоил .modal более высокий z-индекс.
Что я делаю не так?
https://codepen.io/boatus/pen/abWxzwL
.modal {
background-color: rgb(162, 154, 170);
width: 70vw;
height: 70vh;
margin: auto;
position: relative;
z-index: 2;
}
.main {
display: flex;
justify-content: center;
margin: 40px;
gap: 100px;
z-index: 1;
}
Ответ №1:
Вместо позиции relative
вы должны использовать позицию absolute
,
просто добавьте этот css в свой .modal
класс:
position: absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);
Комментарии:
1. Спасибо! Таким образом, относительная позиция перемещает элемент в пределах его собственного блока, в то время как абсолютная позиция перемещает элемент во всем теле страницы? Я также не совсем понял часть «преобразование:перевод(-50%,-50%);».
2. @boatus да, относительное положение перемещает элемент в пределах его собственного блока. в то время как абсолютная позиция перемещает элемент по всему телу страницы — до тех пор, пока он не найдет родителя с относительной позицией. Если у какого-либо родителя есть позиция относительно, то абсолют займет позицию относительного родителя, иначе тело. преобразование:перевод(-50,-50) просто для того, чтобы сделать div в центре, перевод принимает два значения x и y. Без этого ваш div не будет находиться в центре. Вы можете поиграть с ним, чтобы понять.