Картка товару зі значком акції
position: relative + absolute · z-index
Створи картку товару, на якій у верхньому лівому куті розміщений значок "АКЦІЯ". При наведенні миші на картку — повинна з'являтися напівпрозора підказка з описом товару.
- 1Картка має фіксований розмір (наприклад, 220×280px), зображення-заглушка (можна кольоровий блок), назва та ціна товару
- 2Значок "АКЦІЯ" розміщений у верхньому лівому куті картки через position: absolute
- 3Підказка (overlay) при наведенні покриває картку напівпрозорим фоном з описом — також через position: absolute
- 4Значок "АКЦІЯ" повинен бути поверх overlay (використай z-index)
- 5Перехід overlay — плавний (transition: opacity .3s)
<div class="card"> <div class="card__image"></div> <div class="card__badge">АКЦІЯ</div> <div class="card__overlay"> <p>Опис товару...</p> </div> <div class="card__info"> <h3>Назва товару</h3> <p class="card__price">₴ 599</p> </div> </div>
.card дай position: relative; overflow: hidden.Значку
.card__badge: position: absolute; top: 8px; left: 8px; z-index: 2.Overlay
.card__overlay: position: absolute; inset: 0; opacity: 0; z-index: 1, а на .card:hover .card__overlay → opacity: 1.
Критерії оцінювання
Сторінка з фіксованою навігацією та скролом
position: fixed · sticky · overflow · visibility
Створи односторінковий лендінг з фіксованою навігацією, яка залишається на екрані при прокручуванні. Кнопка "↑ Вгору" з'являється після прокрутки 200px і зникає коли вгорі. Секції мають "липкі" підзаголовки.
- 1Навігаційна панель зверху: position: fixed, займає всю ширину, завжди видима при скролі
- 2Мінімум 3 секції контенту (достатньо для появи скролу), кожна з підзаголовком position: sticky; top: 60px (60px — висота навбару)
- 3Кнопка "↑" у нижньому правому куті: position: fixed. Використовує visibility: hidden коли прихована (не display: none) — для плавної анімації opacity
- 4Бічна панель чи блок із overflow-y: auto; max-height: 200px — scrollable список пунктів
- 5JavaScript: слухач scroll на window, що перемикає видимість кнопки "↑"
const btn = document.querySelector('.scroll-top'); window.addEventListener('scroll', () => { if (window.scrollY > 200) { btn.style.visibility = 'visible'; btn.style.opacity = '1'; } else { btn.style.visibility = 'hidden'; btn.style.opacity = '0'; } }); btn.addEventListener('click', () => { window.scrollTo({ top: 0, behavior: 'smooth' }); });
position: sticky; top: 60px, де 60px — це висота фіксованого навбару. Якщо написати top: 0, підзаголовок прилипне під навбаром і той його перекриє. Також переконайся, що жоден батьківський елемент не має overflow: hidden.
Критерії оцінювання
Модальне вікно + бонус
position: fixed · z-index · overflow: hidden на body
Реалізуй модальне вікно (popup / dialog). Кнопка "Відкрити" відображає напівпрозорий backdrop та вікно по центру екрану. При відкриті модалки — сторінка позаду не прокручується. Клік на backdrop або кнопку ✕ закриває вікно.
- 1Backdrop: position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 100
- 2Модальне вікно: position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); z-index: 101
- 3При відкритті модалки: document.body.style.overflow = 'hidden' (сторінка не скролиться)
- 4При закритті: overflow повертається до 'auto'
- 5Кнопка ✕ у правому верхньому куті модалки — теж через position: absolute
<!-- Тригер --> <button id="openModal">Відкрити</button> <!-- Backdrop --> <div class="modal-backdrop" id="backdrop"> <!-- Вікно --> <div class="modal"> <button class="modal__close" id="closeModal">✕</button> <h2>Заголовок модалки</h2> <p>Вміст...</p> </div> </div>
top: 50%; left: 50%; transform: translate(-50%, -50%) — класичний спосіб центрування абсолютного/фіксованого елемента. Спочатку лівий верхній кут вікна в центрі екрану, потім transform зміщує його на половину власної ширини/висоти назад.Щоб клік на backdrop (але не на вікно) закривав модалку, порівняй
event.target === backdrop.
⭐ Бонусне завдання (+5 балів)
Додай анімацію появи модалки: вікно "вїжджає" знизу (translateY) і стає видимим (opacity 0→1) за 0.3с. Для цього використай CSS-клас .modal--visible, який додається/прибирається через JS.
Критерії оцінювання
Порядок здачі роботи
- Кожне завдання — в окремому HTML-файлі:
task1.html,task2.html,task3.html - CSS може бути в тому самому файлі (в тегу
<style>) або в окремому.cssфайлі - Завантажити на курс у Moodle або надіслати посилання на GitHub / CodePen
- Код має бути охайним: відступи, зрозумілі назви класів (BEM або власна логіка)