Всплывающее уведомление (popup) на CSS без JavaScript
Продолжу серию статей о том, что принято делать на JavaScript, но можно сделать на чистом CSS с использованием чекбоксов. Расскажу как сделать всплывающее окно popup.
ДЕМО.
Немного комментариев к коду.
HTML:
<div class="popup-wrapper">
<input type="checkbox" class="popup-checkbox" id="popupCheckboxOne">
<div class="popup">
<div class="popup-content">
<label for="popupCheckboxOne" class="popup-closer">×</label>
Popup text
</div>
</div>
</div>
<label for="popupCheckboxOne" class="popup-shower">Show Popup</label>
Все просто, на странице есть блок popup-wrapper
, в котором лежит чекбокс popup-checkbox
, рядом с ним всплывающее окно, а в конце кнопка-ссылка для вызова это окна. Сделана она на основе label
.
CSS для всплывающего окна и кнопок открытия и закрытия «попапа»:
.popup-checkbox, .popup {
display: none;
}
.popup {
position: fixed;
z-index: 10;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
}
.popup:before {
display: block;
content: ' ';
position: absolute;
z-index: 1;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: #000;
opacity: .5;
}
.popup-content {
width: 200px;
height: 200px;
position: absolute;
z-index: 2;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 6px;
padding: 20px;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.popup-shower {
color: #00f;
cursor: pointer;
text-decoration: underline;
}
.popup-shower:hover {
color: #00a;
text-decoration: underline;
}
.popup-closer {
position: absolute;
top: 5px;
right: 5px;
color: #999;
font-size: 20px;
border: 1px solid #999;
display: block;
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
border-radius: 50%;
cursor: pointer;
}
.popup-closer:hover {
background-color: #eee;
}
И чекбокс и всплывающее окно спрятаны (чекбокс никогда и не появится).
Теперь CSS-стиль, который непосредственно влияет на отображение всплывающего окна:
.popup-checkbox:checked + .popup {
opacity: 1;
display: block;
}
Здесь все банально, если чекбокс выбран - показать «попап».