Финальный код с комментариями, а также HTML и CSS для попапа: HTML
HTML
<div id="popup" class="popup">
<div class="popup__content">
<button class="popup__close" onclick="closePopup()">×</button>
<h2>Заголовок Попапа</h2>
<p>Содержимое попапа. Здесь может быть текст, изображение или любая другая информация.</p>
</div>
</div>
CSS
/* Стили для попапа */
.popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* Полупрозрачный фон */
display: none; /* Скрываем попап по умолчанию */
justify-content: center;
align-items: center;
z-index: 1000;
}
.popup._show {
display: flex; /* Показываем попап */
}
.popup__content {
background: #fff; /* Белый фон */
padding: 20px;
border-radius: 10px;
width: 90%;
max-width: 400px;
text-align: center;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25); /* Тень */
}
.popup__close {
position: absolute;
top: 10px;
right: 10px;
background: none;
border: none;
font-size: 20px;
cursor: pointer;
color: #000;
}
JavaScript
// Показываем попап и сохраняем время показа
function showPopup() {
document.getElementById("popup").classList.add("_show");
localStorage.setItem('popupLastShown', Date.now()); // Сохраняем текущее время в миллисекундах
}
// Проверяем, нужно ли показывать попап
function shouldShowPopup() {
const lastShown = localStorage.getItem('popupLastShown');
const now = Date.now();
const threeHours = 3 * 60 * 60 * 1000; // 3 часа в миллисекундах
// Показывать, если попап не показывался последние 3 часа
return !lastShown || (now - parseInt(lastShown, 10) > threeHours);
}
// Закрываем попап
function closePopup() {
document.getElementById("popup").classList.remove("_show");
}
// Таймер для проверки и показа попапа
setTimeout(() => {
if (shouldShowPopup()) {
showPopup();
}
}, 1000); // Задержка 1 секунда перед проверкой
Пояснения:
- HTML: Попап содержит контейнер
popup
с внутренним содержимымpopup__content
и кнопку для закрытия. - CSS:
popup
— центрирует контент и создает затемненный фон.popup._show
— делает попап видимым, применяяdisplay: flex
.popup__close
— кнопка для закрытия попапа.
- JavaScript:
showPopup()
добавляет класс_show
и сохраняет текущее время.shouldShowPopup()
проверяет, прошло ли 3 часа с последнего показа.closePopup()
удаляет класс_show
, скрывая попап.