Модальное окно на чистом CSS
В примере ниже показывается как можно отображать скрытый блок при нажатии на кнопку без единой строчки JavaScript, только лишь средствами CSS.
Данный подход может быть полезен, если необходимо отобразить некоторый скрытый блок с формой, в которую пользователь должен ввести некоторые данные.
В основе примера лежит изменение состояния чекбокса, к которому привязана метка (label). При клике на метку состояние чекбокса изменяется, вслед за этим меняется состояние и связанного с ним блока.
<!doctype html>
<html lang="en">
<head>
<title>Модальное окно на чистом CSS</title>
</head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
body {
font-family: 'Segoe UI', sans-serif;
}
.simple-modal__label {
margin: 5px;
cursor: pointer;
}
:root {
--width: 500px;
--height: 200px;
}
#content {
display: none;
padding: 5px;
position: absolute;
width: var(--width);
height: var(--height);
top: 50%;
left: 50%;
margin-left: calc(var(--width) / -2);
margin-top: calc(var(--height) / -2);
}
#openCloseCheckBox {
display: none;
}
#openCloseCheckBox:checked~#content {
display: block;
}
</style>
<body>
<div class="simple-modal">
<label class="simple-modal__label btn btn-primary" for="openCloseCheckBox">Показать картинку</label>
<input type="checkbox" id="openCloseCheckBox">
<div id="content">
<div class="card">
<label class="simple-modal__label" for="openCloseCheckBox" style="position: absolute; top: 1px; right: 5px; color: white">Закрыть</label>
<img class="card-img-top" src="https://beautycliks.com/wp-content/uploads/2020/04/m3-1280x640.jpg" alt="Card image cap">
</div>
</div>
</div>
</body>
</html>
Пример здесь:
Таким образом, на основе изменения состояния HTML чекбокса можно менять состояние связанных с ним блоков, например, отображая или скрывая их.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.