Реалізація спливаючих вікон (Modal/Popup) на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація спливаючих вікон (Modal/Popup) на сайті
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація модальних вікон (Modal/Popup) на вебсайті

Модальні вікна мають багато прихованих проблем: управління фокусом, скролл позаду модалі, z-index конфлікти, анімації, мобільний клавіатурний зсув. Нативний <dialog> розв'язує більшість без JS.

Нативний <dialog>: правильна основа

Модаль з showModal() блокує фон через ::backdrop. Використовуємо createPortal для React. Закриття на Escape або клік на фон. Focus trap вбудований.

import { useEffect, useRef, ReactNode } from 'react'
import { createPortal } from 'react-dom'

export function Modal({
  isOpen, onClose, title, children,
  size = 'md',
  closeOnBackdrop = true,
}: ModalProps) {
  const dialogRef = useRef<HTMLDialogElement>(null)

  useEffect(() => {
    const dialog = dialogRef.current
    if (!dialog) return

    if (isOpen) {
      dialog.showModal()
      document.body.style.overflow = 'hidden'
    } else {
      dialog.close()
      document.body.style.overflow = ''
    }
  }, [isOpen])

  return createPortal(
    <dialog ref={dialogRef} className={`modal modal--${size}`}>
      <div className="modal__content">
        {title && <h2 className="modal__title">{title}</h2>}
        <div className="modal__body">{children}</div>
      </div>
    </dialog>,
    document.body
  )
}

CSS анімація для входу та виходу модалі з плавними переходами.

Focus Trap

Утримуємо фокус всередину модалі під час взаємодії. Нативний dialog розбирається з цим автоматично.

Bottom Sheet для мобільних

Позиціюємо fixed від низу з safe-area inset регулюванням для iOS.

Терміни

Базова модаль з анімацією — 3–4 години. React компонент з порталом, focus trap — 1 день. Повна система з confirm/alert API, стеком підтримки — 1,5–2 дні.