Utwórz projekt ↗
HTML / JS · KOD NA LICENCJI MIT

Okno modalne

Natywny dialog z wygodnym zamykaniem.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Okno modalne” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Nagłówek, Treść okna, Tekst przycisku, Kolor. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Okno modalne

HTML

<button class="open" type="button">Otwórz okno ↗</button><dialog class="modal"><button class="close" type="button" aria-label="Zamknij">×</button><h2>Cześć, świecie!</h2><p>To jest Twoje okno modalne. Możesz umieścić tutaj treść, formularz lub zdjęcie.</p><button class="done" type="button">Wszystko jasne →</button></dialog>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.open,.done{border:0;border-radius:6px;background:#e95b30;color:#fff;padding:13px 22px}.modal{border:1px solid #dbe4ce;border-radius:12px;width:min(450px,90vw);padding:35px;color:#2f3d25}.modal::backdrop{background:#1e2b1680;backdrop-filter:blur(4px)}.modal p{font-size:14px;color:#7b896c}.close{position:absolute;top:9px;right:14px;font-size:25px;background:none;border:0;color:#7b896c}

JavaScript

const modal = document.querySelector('.modal');
document.querySelector('.open').addEventListener('click', () => modal.showModal());
modal.querySelectorAll('.close,.done').forEach(button => button.addEventListener('click', () => modal.close()));
modal.addEventListener('click', e => {
    const r = modal.getBoundingClientRect();
    if(e.clientX < r.left || e.clientX > r.right || e.clientY < r.top || e.clientY > r.bottom) modal.close();
});

Podobne przykłady