CodeBlanks Logo Icon CodeBlanks

Dialog ve modal

HTML kursu · Uzman · Ders 4/39

<dialog> etiketi ve ARIA diyaloğu desenini öğrenirsin.

<dialog> etiketi

HTML artık yerleşik <dialog> etiketi sunar. Bu etiket bir modal penceresi için gereken tüm altyapıyı sağlar: üstte katman, odak tuzağı ve ESC ile kapatma. Açmak için JavaScript ile .show() ya da .showModal() çağrılır.

.show() modal değil, normal bir katman açar. .showModal() ise gerçek modalı açar: arka planı karartır, ESC ile kapatılır ve Tab öğeleri modal içinde tutar. Kapamak için .close() kullanılır.

Modalda odak tuzağı

Modal açıkken klavye odağı modal içinde kalmalıdır; buna focus trap (odak tuzağı) denir. Tab döngüsü modalın son öğesinden ilk öğesine atlamalı, dışarı çıkmamalıdır.

Yerleşik <dialog> + .showModal() bunu otomatik yapar. Ayrıca modal açıldığında odak ilk öğeye, kapanınca tetikleyen öğeye döner. ESC tuşu modalı kapatır. Kendi modalını yazıyorsan bunları elle eklemen gerekir.

Uygulama Erişilebilir dialog ve açıcı buton yaz

Body içine bir <dialog> ekle. dialog'a aria-modal="true" ve aria-labelledby="dlg-title" ver. İçine bir <h2 id="dlg-title"> ile başlık yaz (örnek: 'Ayarları sil'). Sonra bir <form method="dialog"> ekle; içine bir <button> koy ve metni 'Vazgeç' olsun. dialog'dan sonra bir <button id="opener"> koy ve metni 'Aç' olsun.

Örnek çözümü göster
<body>
  <dialog aria-modal="true" aria-labelledby="dlg-title">
    <h2 id="dlg-title">Ayarları sil</h2>
    <form method="dialog">
      <button>Vazgeç</button>
    </form>
  </dialog>
  <button id="opener">Aç</button>
</body>

Kendini test et

  1. Hangisi gerçek bir modal (arka plan karartır, ESC ile kapanır) açar?

    • .open()
    • .display()
    • .show()
    • .showModal()
    Cevabı göster

    .showModal() — Doğru. showModal() arka planı karartır, ESC ile kapatır ve Tab'ı modal içinde tutar.

  2. Modal özniteliğini yaz

    <dialog ____="true" aria-labelledby="dlg-title">
      <h2 id="dlg-title">Onay</h2>
    </dialog>
    Cevabı göster
    <dialog aria-modal="true" aria-labelledby="dlg-title">
      <h2 id="dlg-title">Onay</h2>
    </dialog>
  3. Yöntemi amacıyla eşleştir

    showModal()
    Modal açar, odak tuzağı kurar
    show()
    Modal değil, katman açar
    close()
    Diyalogu kapatır
    aria-modal
    Modal olduğunu bildirir
  4. showModal() ile açılan dialog'da ESC tuşu ne yapar?

    • Kapatır (.close() gibi)
    • Sayfayı yeniler
    • Önceki öğeye gider
    • Formu gönderir
    Cevabı göster

    Kapatır (.close() gibi) — Doğru. ESC, showModal ile açılan diyaloğu .close() gibi kapatır.

Uzman bölümündeki tüm dersler