ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ html-ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>?
Π Ρ
ΠΎΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠ΅ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, ΠΈ ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ
UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π° Π² ΡΡΠΆΡΠ»ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² JavaScript ΠΌΠ΅ΡΠΎΠ΄Ρ alert()
, prompt()
ΠΈ confirm()
.
ΠΡΠ»ΠΈΡΠ½Π°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠΎΠ΅Π½ Π² ΡΡΠ°Π½Π΄Π°ΡΡ HTML5 ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ
ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
.
Π ΡΡΠ°ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠ° W3C ΡΠ΅Π³ <dialog>
ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² ΠΌΠ°Π΅ 2013-Π³ΠΎ Π³ΠΎΠ΄Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ <details>
ΠΈ <summary>
, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ. Π‘ 2014-Π³ΠΎ Π³ΠΎΠ΄Π° <dialog>
Π±ΡΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
Google Chrome ΠΈ Opera, Π° Π² Firefox ΠΈ Safari ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π»ΠΈΡΡ Π² ΠΌΠ°ΡΡΠ΅ 2022-Π³ΠΎ Π³ΠΎΠ΄Π°. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ <dialog>
Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡΡΡΠΎΠΌ ΠΏΠΎΡΡΠΈ Π΄Π²ΡΡ
Π»Π΅ΡΠ½Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, ΡΡΠ°Π½Π΄Π°ΡΡ ΡΡΠ°Π» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ, ΡΡΠΎΠ±Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΡΠ΅ <div class="modal" tabindex="-1" role="dialog" aria-modal="true">
Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ <dialog>
ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
HTML-ΡΠ΅Π³ <dialog>
ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΡΡΠΎΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π² Π΄Π²ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠ°Ρ
: Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠΏ-Π°ΠΏΠ° ΠΈΠ»ΠΈ Π² ΡΠΎΠ»ΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠ΅ ΠΏΠΎΠΏ-Π°ΠΏΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° Π½Π΅Π½Π°Π²ΡΠ·ΡΠΈΠ²ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² cookie, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΡΠ΅Π·Π°ΡΡΠΈΡ toast-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΡΠ»ΡΠΈΠΏΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠΌΠΈΡΠΈΡΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ.
ΠΠΎΠ΄Π°Π»ΡΠ½ΡΠ΅ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΡΠΌΡ, ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»Π°ΠΉΡΠ±ΠΎΠΊΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΎΠ².
ΠΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠΏ-Π°ΠΏ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π²ΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π·Π°ΡΠ΅ΠΌΠ½ΡΠ΅Ρ ΡΠΎΠ½ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅Π±Ρ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π»ΡΠ±ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΡΡ ΠΈ ΡΠΊΡΠΈΠΏΡΠ°Ρ ; Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π°.
ΠΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
β Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠΏ-Π°ΠΏ:
<dialog id="pop-up">ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΏΠΎΠΏ-Π°ΠΏ!</dialog>
const popUpElement = document.getElementById("pop-up");
popUpElement.show();
β ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:
<dialog id="modal">ΠΡΠΈΠ²Π΅Ρ, Π° Ρ β ΠΌΠΎΠ΄Π°Π»ΠΊΠ°!</dialog>
Ρonst modalElement = document.getElementById("modal");
modalElement.showModal();
Π ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΎΠΊΠ½Π° ΡΠ΅Π³Ρ <dialog>
ΠΏΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π±ΡΠ»Π΅Π²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ open
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ true
. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² true
Π½Π°ΠΏΡΡΠΌΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΏ-Π°ΠΏ β ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌ ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ΄Π°Π»ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ
ΠΎΠΊΠΎΠ½ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΏ-Π°ΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ Π±Π΅Π· JS:
<dialog open>ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΏΠΎΠΏ-Π°ΠΏ!</dialog>
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅:
- ΠΡΠΊΡΡΡΠΈΠ΅ ΠΏΠΎΠΏ-Π°ΠΏΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
.show()
: https://codepen.io/alexgriss/pen/zYeMKJE - ΠΡΠΊΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
.showModal()
: https://codepen.io/alexgriss/pen/jOdQMeq - ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ°
open
Π½Π°ΠΏΡΡΠΌΡΡ: https://codepen.io/alexgriss/pen/wvNQzRB
Π‘ΠΏΠΎΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
ΠΠ°ΠΊΡΡΠ²Π°ΡΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°ΠΊΡΡΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:
β ΡΠ΅ΡΠ΅Π· Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° .close()
:
Ρonst dialogElement = document.getElementById("dialog");
dialogElement.close();
β ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ submit
Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΡΠΌΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ method="dialog"
:
<dialog>
<h2>ΠΠ°ΠΊΡΠΎΠΉ ΠΌΠ΅Π½Ρ!</h2>
<form method="dialog">
<button>ΠΠ°ΠΊΡΡΡΡ</button>
</form>
</dialog>
β Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ Esc:
ΠΠ°ΠΊΡΡΡΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Esc ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ
ΠΎΠΊΠΎΠ½. ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ cancel
, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ close
β ΡΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ΅ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ Π½Π΅ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡ.
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅:
- ΠΠ°ΠΊΡΡΡΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄
close
: https://codepen.io/alexgriss/pen/GRzwjaV - ΠΠ°ΠΊΡΡΡΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅ΡΠ΅Π·
submit
ΡΠΎΡΠΌΡ: https://codepen.io/alexgriss/pen/jOdQVNV - ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ ΡΠ΅ΡΠ΅Π· Π½Π°ΠΆΠ°ΡΠΈΠ΅ Esc: https://codepen.io/alexgriss/pen/KKJrNKW
- ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΡΡΡΠΈΡ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ ΠΏΠΎ Esc ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ
cancel
: https://codepen.io/alexgriss/pen/mdvQObN
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ
ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ method="dialog"
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠ°Π·Π½ΡΡ
Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΡ
ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° returnValue
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° value
ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΆΠ°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ.
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅: https://codepen.io/alexgriss/pen/ZEwmBKx
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ Π΄Π΅ΡΠ°Π»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠΏ-Π°ΠΏΠ°
ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
Π±ΡΠ» ΠΎΡΠΊΡΡΡ ΠΊΠ°ΠΊ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠΏ-Π°ΠΏ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ .show()
ΠΈΠ»ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° open
, Π΄Π²ΠΈΠΆΠΎΠΊ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡ ΠΏΠΎΠΏ-Π°ΠΏ Π² Π²ΠΈΠ΄Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ ΠΎΠ½ Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ Π² DOM. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ CSS-ΡΡΠΈΠ»ΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΡΡΡΠΏΡ ΠΈ Π³ΡΠ°Π½ΠΈΡΡ, Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ ΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΎΠΊΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ autofocus
. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
ΠΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΡΡΡΠΎΠ΅Π½ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΠΏ-Π°ΠΏ.
ΠΠ΅ΡΠ΅ΠΊΡΡΡΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° .showModal()
ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ»ΠΎΠ΅ HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΎΡ ΡΠ»ΠΎΠΉ ΠΎΡ
Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π²ΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠ»ΠΎΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡ
Π½ΠΈΠΌ ΡΠ»ΠΎΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (top layer), ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠ° β Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Google Chrome, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ DOM-ΡΠ·Π»Π΅ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΠ»ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠΎΠ½ΡΡΠΈΠ΅ ΡΠ»ΠΎΡΠ² ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ (stacking context), ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ Z ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°Ρ
ΠΎΠ΄ΡΡΠ΅ΠΌΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΊΡΠ°Π½ΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ CSS-ΡΠ²ΠΎΠΉΡΡΠ²Π° z-index
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π·Π°ΠΌΠΊΠ½ΡΡΡΠΉ Π½Π° ΡΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π΅Π³ΠΎ ΡΠΎΡΠ΅Π΄Π΅ΠΉ, Π° Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ z-index
Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. Π’Π°ΠΊΡΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ»ΠΎΠΈΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Π° ΠΎΡΠΊΡΡΡΠΎΠ΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π½Π°Π²Π΅ΡΡ
Ρ ΡΡΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΡ Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΠ»ΠΎΠ΅, ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ CSS-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ z-index
.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ stacking context ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π½Π° mdn .
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π½Π΄Π΅ΡΡΡΡΡ Π² top layer β Π½Π° mdn .
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΡΡΡ Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΠ»ΠΎΠ΅, ΠΏΠΎΠ΄ Π½ΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎ-ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠΈ ::backdrop
, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠ° ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π½Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ CSS-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ pointer-events: none
.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΡΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° inert
Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠΡΡΠΈΠ±ΡΡ inert
ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊΠ»ΠΈΠΊΠ° ΠΈ ΡΠΎΠΊΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΡΠ΅Ρ ΠΈΡ
ΠΎΡ ΡΠΊΡΠ°Π½Π½ΡΡ
Π΄ΠΈΠΊΡΠΎΡΠΎΠ² (ΡΠΊΡΠΈΠ½ΡΠΈΠ΄Π΅ΡΠΎΠ²) ΠΈ Π΄ΡΡΠ³ΠΈΡ
Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ
Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ (accessibility).
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ Π°ΡΡΠΈΠ±ΡΡ inert
: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΡΡΠ°
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΡΠΎΠΊΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Ρ ΠΎΡΠΊΡΡΡΠΈΡ. ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ autofocus
ΠΈΠ»ΠΈ tabindex
. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° tabindex
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½, Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΡΠ°Π½ΠΈΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° Π°ΡΡΠΈΠ±ΡΡΠ° inert
.
ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠΎΠΊΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·Π²Π°Π» Π΅Π³ΠΎ ΠΎΡΠΊΡΡΡΠΈΠ΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
Π½Π΅ ΠΎΡ
Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ. ΠΠ°Π»Π΅Π΅, Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
UX-ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ
ΠΎΠΊΠΎΠ½.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠΊΡΠΎΠ»Π»Π°
Π₯ΠΎΡΡ Π² Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ ::backdrop
, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ β ΡΠΊΡΠΎΠ»Π» ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΡ Π΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅Π·Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ body
:
body {
overflow: hidden;
}
Π’Π°ΠΊΠΎΠ΅ css-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ±ΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ ΠΏΡΡΡΠΌ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ Π΄Π°Π½Π½ΠΎΠ΅ CSS-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
// ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ
document.body.classList.add("scroll-lock");
// ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ
document.body.classList.remove("scroll-lock");
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠΌ :has
, Π΅ΡΠ»ΠΈ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
body:has(dialog[open]) {
overflow: hidden;
}
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅: https://codepen.io/alexgriss/pen/XWOyVKj
ΠΠ°ΠΊΡΡΡΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ UX-ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π»Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
Π‘ΠΏΠΎΡΠΎΠ±, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ
ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠΈ ::backdrop
ΠΠ»ΠΈΠΊ ΠΏΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Π΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ <div>
ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΡ ΠΈΠΌ ΡΠ°ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΈΠ°Π»ΠΎΠ³Π°, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΡΠ΄Π° Π±ΡΠ» Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ ΠΊΠ»ΠΈΠΊ β Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΡ ΠΈΠ»ΠΈ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠ΅ Π·Π°Π±ΡΠ΄Π΅ΠΌ ΡΠ±ΡΠΎΡΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈ ΠΎΡΡΡΡΠΏΠΎΠ² ΠΈ Π³ΡΠ°Π½ΠΈΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅ ΠΏΠΎ Π½ΠΈΠΌ:
dialog {
padding: 0;
border: none;
}
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠΈΡ Π΄Π»Ρ ΠΎΠΊΠ½Π° Π³ΡΠ°Π½ΠΈΡ ΠΈ ΠΎΡΡΡΡΠΏΠΎΠ² ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΎΠ±ΡΡΡΠΊΠ΅.
ΠΡΡΠ°Π»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΡ, Π° Π½Π΅ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΡΠΊΠΈ:
const handleModalClick = ({ currentTarget, target }) => {
const isClickedOnBackdrop = target === currentTarget;
if (isClickedOnBackdrop) {
currentTarget.close();
}
};
modalElement.addEventListener("click", handleModalClick);
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅: https://codepen.io/alexgriss/pen/mdvQXpJ
Π‘ΠΏΠΎΡΠΎΠ±, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΠΎΠ²Π°Π» ΠΎΠ±ΡΡΡΡΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΠΈ. ΠΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, β ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΡΡ ΠΎΠ΄ΡΡ Π»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΡΡΡΠΎΡΠ° Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΠΊΠ½Π° ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅:
const handleModalClick = (event) => {
const modalRect = modalElement.getBoundingClientRect();
if (
event.clientX < modalRect.left ||
event.clientX > modalRect.right ||
event.clientY < modalRect.top ||
event.clientY > modalRect.bottom
) {
modalElement.close();
}
};
modalElement.addEventListener("click", handleModalClick);
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π² Π΄Π΅Π»Π΅: https://codepen.io/alexgriss/pen/NWoePVP
Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π½Π°ΡΠΈΠ²Π½ΡΡ
HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π² ΠΏΠ»Π°Π½Π΅ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³ΠΎΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ² Π΄Π»Ρ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ
ΠΎΠΊΠΎΠ½:
Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠ½Π° ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ::backdrop
: https://codepen.io/alexgriss/pen/ExrOQEO
ΠΠ½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΎΠΊΠ½Π°: https://codepen.io/alexgriss/pen/QWYJQJO
ΠΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ΄Π±Π°ΡΠ°: https://codepen.io/alexgriss/pen/GRzwxgr
ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ
Π₯ΠΎΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
ΠΈΠΌΠ΅Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (accessibility), Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΡΠ°Π½Π½ΡΠ΅ Π΄ΠΈΠΊΡΠΎΡΡ (VoiceOver, TalkBack, NVDA), Ρ
ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ.
ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
, ΡΠΎΠΊΡΡ ΡΠΊΡΠ°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠΊΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π° Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΌΠΎΠ΄Π°Π»ΠΊΠΎΠΉ β ΠΎΡΡΠ°ΡΡΡΡ Π² Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° ΠΎΡΠΊΡΡΡΠ°.
ΠΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ARIA-Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ role="dialog"
. ΠΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
, ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ARIA-Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ aria-modal="true"
.
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠ»ΡΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
:
aria-labelledby
ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π½ΡΡΡΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ
ΠΎΠΊΠΎΠ½ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ aria-labelledby
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°:
<dialog aria-labelledby="dialog-header">
<h1 id="dialog-header">Dialog Header</h1>
</dialog>
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΡΠ°Π½Π½ΡΠ΅ Π΄ΠΈΠΊΡΠΎΡΡ Π±ΡΠ΄ΡΡ Π·Π°ΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
aria-describedby
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ aria-describedby
Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΡΠΈΠ½ΡΠΈΠ΄Π΅ΡΡ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
Π±Π΅Π· ΡΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ Π»ΡΠ±ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
<dialog aria-labelledby="dialog-header" aria-describedby="dialog-content">
<h1 id="dialog-header">Dialog Header</h1>
<div id="dialog-content">Dialog Content</div>
<button id="close-btn">Close dialog</button>
</dialog>
aria-label
ΠΡΠ΅Π³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π΄Π»Ρ Π·Π°ΠΊΡΡΡΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ
ΠΎΠΊΠΎΠ½, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄Π°Π»ΠΎΠΊ. ΠΠ»Ρ Π»ΡΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <button>
. ΠΠ»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΊΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ Π² ARIA-Π°ΡΡΠΈΠ±ΡΡΠ΅ aria-label
:
<dialog aria-labelledby="dialog-header">
<button id="close-btn" aria-label="Close dialog">x</button>
<h1 id="dialog-header">Dialog Header</h1>
</dialog>
ΠΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
ΠΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ, ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΡ Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ. ΠΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <dialog>
, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠ»ΠΎΠΌ , ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Google Chrome.
Π‘ΠΊΡΠΈΠΏΡΡ ΠΈ ΡΡΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CDN ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ npm-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ: npm install dialog-polyfill
.
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½ Π½Π΅ ΡΠ΅ΡΠ΅Π· ΠΈΠΌΠΏΠΎΡΡ npm-ΠΏΠ°ΠΊΠ΅ΡΠ°, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΈΠ»ΠΈ: https://github.com/GoogleChrome/dialog-polyfill/blob/master/dist/dialog-polyfill.css
ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ::backdrop
, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΡΡΠΈΠ»ΠΈ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ .backdrop
Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ:
dialog::backdrop {
background-color: rgba(0, 0, 0, 0.5);
}
dialog + .backdrop {
background-color: rgba(0, 0, 0, 0.5);
}
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠ» ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Ρ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
:
const isBrowserNotSupportDialog = window.HTMLDialogElement === undefined;
if (isBrowserNotSupportDialog) {
const dialogElement = document.getElementById("modal");
const { default: polyfill } = await import("dialog-polyfill");
polyfill.registerDialog(dialogElement);
}
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΡΠΈΠ²Π½ΡΠΉ HTML-ΡΠ»Π΅ΠΌΠ΅Π½Ρ <dialog>
β ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ
ΠΎΠΊΠΎΠ½ ΠΈ ΠΏΠΎΠΏ-Π°ΠΏΠΎΠ². ΠΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
Π½Π° ΡΠΈΡΡΠΎΠΌ JS, ΡΠ°ΠΊ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΡ Π²Π°ΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
- ΠΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ·Π²Π°Π½ ΡΠ΅ΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
<dialog>
; - ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ API ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
<dialog>
; - ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°;
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ;
- Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
<dialog>
Π΄Π»Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠ½ΡΠΈΠ΄Π΅ΡΡ; - Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
<dialog>
.
ΠΠ°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π° ΡΠΈΡΡΠΎΠΌ JS, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅: https://codepen.io/alexgriss/pen/abXPOPP
ΠΡΠΎ Π²ΡΡ, ΡΡΠΎ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ <dialog>
. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ Π²Π΄ΠΎΡ
Π½ΠΎΠ²ΠΈΡ Π²Π°Ρ Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ!
ΠΡΠΈΠ³Π»Π°ΡΠ°Ρ Π²Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΌΠΎΠΉ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»: https://t.me/alexgriss , Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΏΠΈΡΡ ΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΠΏΡΠ±Π»ΠΈΠΊΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ, Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠ΅ΠΌΡ, Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΡΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.