Уявіть собі: давньоєгипетські коти їздять на велосипедах, крадуть артефакти та змагаються, щоб стати верховним правителем Бубастіса. Це Bubacat (дзеркало сайту) – супер весела, сімейна пригодницька карткова гра, яка потребувала такого ж яскравого та захоплюючого сайту. Ось як я втілив їхній цифровий світ у життя.

Герої Bubacat: коти Франклін, Джин Грей, Зуко
Герої Bubacat: коти Франклін, Джин Грей, Зуко

Мета

  • Передати зухвалу атмосферу "єгипетських котів"
  • Зробити сайт зрозумілим менш ніж за 10 секунд
  • Забезпечити блискавичне завантаження (покупці ігор нетерплячі!)
  • Підготувати чисту основу WooCommerce для карт + футболок, кепок тощо
  • Адаптивні макети для мобільних пристроїв
  • Місце для блогу, профілів персонажів та галереї

Кастомізація теми та глобальні стилі

На кожному новому сайті я завжди роблю перший крок: налаштовую дизайн-систему в Elementor та Astra. Я визначаю глобальні кольори, типографіку та адаптивні брейкпойнти перед створенням будь-яких розділів. Це гарантує візуальну цілісність на всіх пристроях.

  • Elementor > Налаштування сайту > Глобальні кольори
  • Elementor > Налаштування сайту > Глобальні шрифти
  • Elementor > Налаштування сайту > Макет > Брейкпойнти
Налаштування Elementor BubacatCity
Налаштування Elementor BubacatCity

(Опціонально) Appearance / Astra > Customize > Global > Colors (Typography / Container) — стилі Elementor мають пріоритет над налаштуваннями Astra. Проте керовані темою області, такі як архіви блогів, хедери та футери, використовують конфігурацію Astra. Якщо ви помітили невідповідності в цих областях, перевірте налаштування кастомайзера Astra.

Хедер (Логотип, Меню, Кнопка)

Хедер BubacatCity
Хедер BubacatCity

Для цього проекту я використав гнучкий конструктор хедерів Astra та розширив його за допомогою дочірньої теми. Я створив дочірню тему за допомогою офіційного генератора дочірніх тем Astra, що дозволило мені безпечно додавати кастомний CSS, не торкаючись батьківських файлів. Мета була створити прозорий хедер, який фіксується при прокручуванні. Я досяг цього так:

CSS Code:
.site-header {
  position: sticky;
  top: 0;
  z-index: 999;
}
#content {
  margin-top: -92px; /* Your header height */
}

Hero-розділ

Hero-розділ BubacatCity
Hero-розділ BubacatCity

Для першого екрану я додав 8 іконок-ієрогліфів та скрипт, який повільно показує їх по одному у випадковому порядку. Оскільки завантаження та відображення займає 2-3 секунди, я додав анімацію зворотного відліку з плавним зникненням, щоб зробити процес очікування цікавішим.

Розділ блогу

Для створення блогу я використав плагін The Post Grid та кастомізував його стилі, щоб вони відповідали дизайну сайту.

Розділ статей блогу BubacatCity
Розділ статей блогу BubacatCity
Плагін The Post Grid для блогу
Плагін The Post Grid для блогу

В кінці кожної статті я додав карусель схожих публікацій зі стрілками у вигляді котячих лапок:

Схожі публікації BubacatCity зі стрілками у вигляді котячих лапок
Схожі публікації BubacatCity зі стрілками у вигляді котячих лапок

Для створення цієї каруселі з автоматичною прокруткою я використав плагін Blog Designer Pack.

Налаштування плагіна Blog Designer Pack для BubacatCity
Налаштування плагіна Blog Designer Pack для BubacatCity

Розділ "Знайомство з котами"

Знайомство з котами BubacatCity
Знайомство з котами BubacatCity

Я створив інтерактивні картки, де при натисканні на кнопку "Дізнатися більше" кнопка зникає, і з'являється опис персонажа. Для цього я використав JavaScript:

JavaScript Code:
document.addEventListener("DOMContentLoaded", function () {
  document.querySelectorAll(".reveal-container").forEach((container) => {
    const btn = container.querySelector(".reveal-btn");
    const hidden = container.querySelector(".hidden-text");
    if (btn && hidden) {
      btn.addEventListener("click", () => {
        btn.style.display = "none";
        hidden.style.display = "block";
      });
    }
  });
});

Галерея

Розділ галереї BubacatCity
Розділ галереї BubacatCity

А для галереї я обрав Modula Image Gallery – Photo Grid. Також я вирішив додати можливість перемикання зображень у галереї за допомогою стрілок на клавіатурі (ліва стрілка — попереднє зображення, права — наступне). Щоб це запрацювало, я використав JavaScript-код, який при натисканні клавіші імітує клік по стрілках "вперед" або "назад":

JavaScript Code:
document.addEventListener('keydown', function(e) {
    const container = document.querySelector('.modula-fancybox-container');
    if (!container) return;

    const style = window.getComputedStyle(container);
    if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') return;

    const next = container.querySelector('.f-button.is-next');
    const prev = container.querySelector('.f-button.is-prev');

    if (!next || !prev) return;

    if (e.key === 'ArrowRight') next.click();
    if (e.key === 'ArrowLeft') prev.click();
});

Магазин та фінальний результат

Для магазину я використав плагін WooCommerce. Наразі я завершую дизайн карток та коробки. Гральні карти та коробка виглядатимуть так:

Гральні карти BubacatCity
Гральні карти BubacatCity
Дизайн коробки BubacatCity
Дизайн коробки BubacatCity