Ինչպես հեշտությամբ կառուցել մոդալներ HTML երկխոսության տարրի միջոցով


Մոդալների այս ուղեցույցով ծանոթացեք HTML երկխոսության տարրին:

Երկխոսություններն ու մոդալները վեբ հավելվածների մեծ մասի անբաժանելի մասն են: Թեև դրանք ձեռքով կառուցելը բարդ խնդիր չէ, այն արագորեն հոգնեցուցիչ է դառնում ցանկացած վեբ մշակողի համար: Դրանք ձեռքով կառուցելու սովորական այլընտրանքն ուրիշի կողմից ստեղծված բաղադրիչի օգտագործումն է:

Այնուամենայնիվ, այս մոտեցման հետ կապված մի քանի խնդիր կա: Այնքան շատ տարբերակներ կան, դժվար է դառնում իմանալ, թե որ բաղադրիչն է ավելի լավ օգտագործել, և նման բաղադրիչների արտաքին տեսքը հարմարեցնելը երբեմն կարող է նույնքան հոգնեցուցիչ լինել, որքան ձեռքով երկխոսություն կառուցելը: Բարեբախտաբար, կա ևս մեկ այլընտրանք՝ HTML երկխոսության տարրը:

Ի՞նչ է երկխոսության տարրը:

HTML երկխոսության տարրը ներկառուցված HTML թեգ է (ինչպես div կամ span), որը թույլ է տալիս մշակողներին ստեղծել անհատական երկխոսություններ և մոդալներ: Երկխոսության տարրը գործում է Chrome-ում և Opera-ում 2014 թվականից, բայց միայն վերջերս է աջակցվում բոլոր հիմնական բրաուզերների կողմից:

Ինչու՞ օգտագործել երկխոսության տարրը:

Երկխոսության տարրը օգտագործելու հիմնական պատճառը հարմարավետությունն է: Այն հեշտացնում է երկխոսությունների կառուցումը, որոնք կարող են կամ ներդաշնակորեն հայտնվել կամ ցուցադրվել որպես մոդալներ՝ ոչ ավելի, քան մեկ HTML թեգ և JavaScript-ի մի քանի տող:

Երկխոսության տարրը վերացնում է հատուկ երկխոսություն ստեղծելու և վրիպազերծելու անհրաժեշտությունը կամ ներմուծել ուրիշի բաղադրիչը: Այն նաև շատ հեշտ է ոճավորել CSS-ով։

Բրաուզերի աջակցություն երկխոսության տարրի համար

Ցավոք, երկխոսության տարրի բրաուզերի աջակցությունը կարող է ավելի լավ լինել: Այն աջակցվում է բոլոր հիմնական բրաուզերների վերջին տարբերակներում 2022 թվականի մարտի դրությամբ՝ որոշ նախազգուշացումներով:

Firefox 98-ից հին ցանկացած Firefox բրաուզեր այն կաջակցի միայն այն դեպքում, եթե այն ձեռքով միացված է բրաուզերի կարգավորումներում, իսկ Safari 15.4-ից ավելի վաղ Safari տարբերակն ընդհանրապես չի աջակցում: Բրաուզերի աջակցության ամբողջական մանրամասները հասանելի են caniuse-ում:

Բարեբախտաբար, սա չի նշանակում, որ երկխոսության տարրն անօգտագործելի է: Google Chrome-ի թիմը պահպանում է պոլիֆիլմ, որը կարող եք գտնել Github-ում երկխոսության տարրի համար, որն ապահովում է դրա աջակցությունը նույնիսկ այն բրաուզերներում, որտեղ այն չի աջակցվում բնիկ:

Իր ներկայիս ձևով երկխոսության տարրը կարող է ունենալ հասանելիության խնդիրներ, ուստի ավելի հարմար կլինի օգտագործել հատուկ երկխոսության բաղադրիչ, ինչպիսին է a11y-dialog-ը արտադրական հավելվածներում:

Ինչպես օգտագործել երկխոսության տարրը

Ցույց տալու համար, թե ինչպես օգտագործել երկխոսության տարրը, դուք կօգտագործեք այն՝ ստեղծելու ընդհանուր կայքի հատկանիշ՝ ջնջման կոճակի հաստատման մոդալ:

Այն ամենը, ինչ պահանջվում է հետևել, մեկ HTML ֆայլ է:

1. Ստեղծեք HTML ֆայլը

Սկսեք ստեղծելով նշված ֆայլը և անվանելով այն index.html:

Հաջորդը, հաստատեք HTML ֆայլի կառուցվածքը և տրամադրեք էջի մասին որոշ հիմնական մետա-տեղեկատվություն, որպեսզի այն պատշաճ կերպով ներկայացվի բոլոր սարքերում:

Մուտքագրեք հետևյալ կոդը index.html-ում.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Dialog demo</title>
</head>
 
<style></style>
 
<body></body>
 
<script></script>
</html>

Դա այն ամբողջ կարգավորումն է, որն անհրաժեշտ է այս նախագծի համար:

2. Նշանակումը գրելը

Հաջորդը գրեք ջնջման կոճակի նշումը, ինչպես նաև երկխոսության տարրը:

Մուտքագրեք հետևյալ կոդը index.html-ի մարմնի պիտակում.

<div class="button-container">
 <button>
   Delete item
 </button> 
</div>
<dialog>
 <div>
     Are you sure you want to delete this item?
 </div> 
 <div>
   <button class="close">
     Yes
   </button>
   
   <button class="close">
     No
   </button>
 </div>
</dialog>

Վերևի HTML-ը կստեղծի.

  • Ջնջման կոճակ:
  • Երկխոսության տարր.
  • Երկու կոճակ երկխոսության ներսում:

Եթե index.html-ը բաց է ձեր դիտարկիչում, էկրանին տեսանելի միակ տարրը կլինի ջնջել կոճակը: Սա չի նշանակում, որ սխալ բան կա, երկխոսության տարրը պարզապես պահանջում է մի քիչ JavaScript, որպեսզի տեսանելի դառնա:

3. JavaScript-ի ավելացում

Այժմ գրեք կոդը, որը կբացի երկխոսությունը, երբ օգտատերը սեղմի ջնջել կոճակը, ինչպես նաև ծածկագիրը, որը թույլ կտա երկխոսությունը փակել:

index.html-ի script tag-ում մուտքագրեք հետևյալը.

const modal = document.querySelector("dialog")
document.querySelector(".button-container button").addEventListener("click", () => {
 modal.showModal();
});
const closeBtns = document.getElementsByClassName("close");
for (btn of closeBtns) {
 btn.addEventListener("click", () => {
   modal.close();
 })
}

Այս կոդը օգտագործում է querySelector մեթոդը՝ կոճակներին և երկխոսության հղումներ ստանալու համար: Այն այնուհետև յուրաքանչյուր կոճակին կցում է իրադարձության ունկնդիր սեղմիչ:

Դուք կարող եք ծանոթ լինել JavaScript-ի իրադարձությունների ունկնդիրներին, որոնք կարող եք օգտագործել ինքներդ: Ջնջել կոճակին կցված իրադարձության ունկնդիրը կանչում է showModal() մեթոդը՝ կոճակը սեղմելիս երկխոսությունը ցուցադրելու համար։

Մոդալի ներսում յուրաքանչյուր կոճակ ունի իրադարձության ունկնդիր, որն օգտագործում է close() մեթոդը՝ թաքցնելու երկխոսությունը, երբ դրանք սեղմվում են:

Նույնիսկ եթե կոդի մեջ չկա JavaScript, որը կանչում է close() մեթոդը, օգտվողները կարող են նաև փակել մոդալը՝ սեղմելով իրենց ստեղնաշարի escape ստեղնը:

Այժմ, երբ այս JavaScript-ը տեղադրված է, եթե օգտվողը սեղմի ջնջել կոճակը, մոդալը կբացվի, և սեղմելով այո կամ ոչ կոճակը, մոդալը կփակի:

Ահա թե ինչպիսին պետք է լինի բացված մոդալը.

Ուշագրավ մի բան այն է, որ երկխոսության տարրն արդեն ունի որոշակի ոճավորում, թեև index.html-ում CSS չկա: Մոդալն արդեն կենտրոնացած է, այն ունի եզրագիծ, լայնությունը սահմանափակված է բովանդակությամբ և ունի որոշակի լռելյայն լիցք:

Օգտատերերը չեն կարող փոխազդել (սեղմել, ընտրել) հետին պլանում գտնվող որևէ բանի հետ, մինչ մոդալը բաց է:

Երկխոսության տարրը կարող է նաև դրսևորվել որպես էջի հոսքի մաս, այլ ոչ թե որպես մոդալ: Փորձելու համար փոխեք առաջին իրադարձության ունկնդիրը JavaScript-ում այսպես.

document.querySelector(".button-container button").addEventListener("click", () => { modal.show(); });

Միակ բանը, որ փոխվել է այս կոդում, այն է, որ կոդը կանչում է show() մեթոդը՝ showModal() մեթոդի փոխարեն։ Այժմ, երբ օգտատերը սեղմում է ջնջել տարրի կոճակը, մոդալը պետք է ներդիրում բացվի այսպես.

4. Ավելացնել Styling

Հաջորդը, հարմարեցրեք երկխոսության տեսքը և դրա ֆոնը՝ գրելով CSS:

CSS-ը կնվազեցնի երկխոսության եզրագիծը, կսահմանափակի դրա առավելագույն լայնությունը, այնուհետև կմթնեցնի ֆոնը, ինչպես նաև կավելացնի մի փոքր ոճավորում կոճակներին:

Երկխոսության ձևավորումն ինքնին պարզ է, բայց հետնաշերտի կեղծ դասը անհրաժեշտ է ոճավորում ավելացնելու համար, որն ուղղված է երկխոսության ֆոնին:

Տեղադրեք հետևյալ կոդը index.html-ի ոճի թեգում.

dialog::backdrop {
  background: black;
  opacity: 0.5;
}
button {
  border-radius: 2px;
  background-color: white;
  border: 1px solid black;
  margin: 5px;
  box-shadow: 1px 1px 2px grey;
}
dialog {
  max-width: 90vw;
  border: 1px solid black;
}

Երբ երկխոսությունը բաց է, այն այժմ պետք է նման լինի.

Եվ դուք ստեղծել եք լիովին ֆունկցիոնալ երկխոսություն:

Երկխոսության տարրը մոդալներ կառուցելու հիանալի միջոց է

Օգտագործելով HTML երկխոսության տարրը, որը վերջերս աջակցություն է ստացել բոլոր հիմնական բրաուզերներում, վեբ մշակողները այժմ կարող են ստեղծել լիովին ֆունկցիոնալ, հեշտությամբ կարգավորելի մոդալներ և երկխոսություններ մեկ HTML թեգով և JavaScript-ի մի քանի տողով և առանց երրորդ կողմի լուծումների վրա հիմնվելու կարիքի:

Երկխոսության տարրն ունի բազմալցում, որը պահպանվում է Google Chrome թիմի կողմից, որը թույլ է տալիս ծրագրավորողներին օգտագործել երկխոսություն բրաուզերի այն տարբերակներում, որոնք չեն աջակցում այն: