Cum se creează un modal emergent cu JavaScript din zero

în acest tutorial Vom învăța cum să creăm maniere pop-up cu JavaScript (ferestre de dialog) fără a utiliza un cadru de lucru, cum ar fi bootstrap sau a Biblioteca terță parte. Vom crea totul de la zero, oferind un control complet asupra modului în care funcționează și cum arată.

Aici este spectacolul pe care îl vom crea:

1. Începeți cu marcarea paginii

va crea mai întâi un modal. Pentru a face acest lucru, vom adăuga clasa .modal și un ID unic la un container. Apoi vom specifica dialogul prin setarea unui element ca element secundar direct al .modal. Dialogul va conține conținutul modalului. Poate fi orice tip de conținut, cum ar fi textul, imaginile, casetele de lumină, notificările / alertele utilizatorilor etc.

„O fereastră de dialog (sau modal) este un element mic Interfața utilizator (UI) care apare în prim-plan pe un site web, este de obicei activată ca un avertisment, astfel încât utilizatorul să facă ceva „- Adi Prdila
iv id =” A7cb84b0ae „

la Deschideți un modal, vom avea nevoie de orice element cu atributul data-open (în mod normal button). Valoarea acestui atribut trebuie să fie ID-ul modalului dorit.

Implicit, un modal se va închide dacă vom face clic pe limitele sau când apăsăm tasta Esc Dar o putem închide, de asemenea, dacă facem clic pe orice element cu atributul data-close (de obicei button).

La început, modalul va apărea / va dispărea cu un efect de decolorare. Dar avem capacitatea de a regla efectul de animație de dialog utilizând atributul data-animation. valoarea acestui atribut care trebuie adăugat la .modal poate fi oricare dintre următoarele valori:

  • iv id = „bcd16c7eac”
  • iv id = „de5e34b4cc”
  • bdbfed5233 „>
  • zoomInOut
  • iv id = „
  • mixInAnimations
  • Vom vedea mai îndeaproape aceste valori într-o secțiune următoare.

    Pentru moment, ne vom familiariza cu marcajul care este necesar Pentru a reprezenta un mod modal:

    <button type="button" class="open-modal" data-open="modal1">...</button><div class="modal"> <div class="modal-dialog"> <header class="modal-header"> ... <button class="close-modal" aria-label="close modal" data-close>✕</button> </header> <section class="modal-content">...</section> <footer class="modal-footer">...</footer> </div></div>

    2. Definește câteva stiluri de bază

    cu marcajul pregătit, vom configura unele Variabile CSS și vom reporni stilurile:

    :root { --lightgray: #efefef; --blue: steelblue; --white: #fff; --black: rgba(0, 0, 0, 0.8); --bounceEasing: cubic-bezier(0.51, 0.92, 0.24, 1.15);}* { padding: 0; margin: 0;}button { cursor: pointer; background: transparent; border: none; outline: none; font-size: inherit;}

    După aceea, vom concentra orizontal și conținut vertical d E pagina. În plus, vă vom oferi niște stiluri la butonul responsabil pentru deschiderea modalului:

    /*CUSTOM VARIABLES HERE*/body { display: flex; align-items: center; justify-content: center; height: 100vh; font: 16px/1.5 sans-serif;}.btn-group { text-align: center;}.open-modal { font-weight: bold; background: var(--blue); color: var(--white); padding: .75rem 1.75rem; margin-bottom: 1rem; border-radius: 5px;}

    În acest moment, ne vom concentra atenția asupra stilurilor lui Modal.

    Fiecare modal va avea următoarele caracteristici:

    • va fi ecran complet cu o poziție fixă. Adică, va fi văzută ca o suprapunere care acoperă toată lățimea și înălțimea ferestrei.
    • va avea o culoare fundal întunecată.
    • va fi ascuns în mod implicit.
    • Dialogul va fi centrat pe orizontală și vertical.
    /*CUSTOM VARIABLES HERE*/.modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: center; padding: 1rem; background: var(--black); cursor: pointer; visibility: hidden; opacity: 0; transition: all 0.35s ease-in;}

    Dialogul va avea o lățime maximă și o înălțime. Înălțimea sa va fi de 80% din înălțimea ferestrei. În cazurile în care înălțimea depășește valoarea respectivă, va apărea o bară de derulare verticală:

    /*CUSTOM VARIABLES HERE*/.modal-dialog { position: relative; max-width: 800px; max-height: 80vh; border-radius: 5px; background: var(--white); overflow: auto; cursor: default;}

    În cele din urmă, vom defini câteva stiluri simple pentru fiecare dintre secțiunile de conținut

    /*CUSTOM VARIABLES HERE*/.modal-dialog > * { padding: 1rem;}.modal-header,.modal-footer { background: var(--lightgray);}.modal-header { display: flex; align-items: center; justify-content: space-between;}.modal-header .modal-close { font-size: 1.5rem;}.modal p + p { margin-top: 1rem;}

    3. Alternativ Modal

    O pagină poate avea mai mult modal . Dar, după cum sa menționat mai sus, toate manierele vor fi ascunse la început.

    Deschide modal

    În mod similar, o pagină poate avea mai mult de un activator deschis (elemente cu atributul data-open). De fiecare dată când faceți clic pe un activator, modalul asociat trebuie să fie vizibil cu o animație care apare treptat (se estompează). Amintiți-vă că valoarea atributului data-open trebuie să se potrivească cu ID-ul unui modal.

    aici este scriptul care dezvăluie un mod modal:

    const openEls = document.querySelectorAll("");const isVisible = "is-visible";for(const el of openEls) { el.addEventListener("click", function() { const modalId = this.dataset.open; document.getElementById(modalId).classList.add(isVisible); });}

    și clase relevante CSS:

    ivid id = „806C49C11C”

    Închidere modal

    cu implementarea noastră Odată ce un modal poate apărea numai la un moment dat (acest cod nu acceptă manierele imbricate). Așa cum am menționat în secțiunea anterioară de apelare, există trei metode disponibile pentru ao ascunde cu un efect de decolorare (Fade-out).

    recaptarea.

    Primul, făcând clic pe elementul personalizat care este situat în interiorul modalului:

    const closeEls = document.querySelectorAll("");const isVisible = "is-visible";for (const el of closeEls) { el.addEventListener("click", function() { this.parentElement.parentElement.parentElement.classList.remove(isVisible); });}

    În al doilea rând, făcând clic pe oriunde în afara modalului:

    const isVisible = "is-visible";document.addEventListener("click", e => { if (e.target == document.querySelector(".modal.is-visible")) { document.querySelector(".modal.is-visible").classList.remove(isVisible); }});

    În acest caz, modal (suprapunere) se comportă ca o închidere uriașă buton. Din acest motiv, i-am dat iv id = „50bb208896”

    .

    În cele din urmă, apăsând tasta Esc:

    const isVisible = "is-visible";document.addEventListener("keyup", e => { if (e.key == "Escape" && document.querySelector(".modal.is-visible")) { document.querySelector(".modal.is-visible").classList.remove(isVisible); }});

    este un moment bun pentru a vedea ce am creat până acum:

    Modal arată foarte bine! Rețineți că de fiecare dată când facem clic pe un activator deschis, este încărcat modal corespunzător.

    Să luăm un alt pas și să examinăm câteva idei pentru a vă încuraja dialogul.

    4. Adăugați animații la

    Dialogul După cum am indicat înainte, comportamentul implicit al modalului este aspectul treptat (dispariția) și decolorarea treptată (decolorarea). Dar există opțiunea de a ajusta efectul de animație al ferestrei pop-up.

    Am creat deja suficiente efecte de animație pe care le puteți utiliza ca o alternativă la efectul de decolorare. Pentru a face acest lucru, pur și simplu trebuie să treceți atributul la .modal.

    De exemplu, dacă doriți Dialogul apare cu o animație glisantă de la stânga la dreapta, veți avea nevoie de efectul slideInOutLeft.

    În spatele scenei, există două reguli care realizează această animație:

    /*CUSTOM VARIABLES HERE*/ .modal-dialog { opacity: 0; transform: translateX(-100%); transition: all 0.5s var(--bounceEasing);}.is-visible .modal-dialog { opacity: 1; transform: none; transition-delay: 0.2s;}

    Verificați modalul cu acest tip de animație aici:

    Puteți verifica restul animațiilor, uitându-se la fila CSS a Proiectul de demonstrație final. În funcție de complexitatea animațiilor, am folosit tranziții CSS sau animații pentru a le crea.

    Am folosit și funcția cubic-bezier() pentru a ajusta funcția de timp a tuturor tranzițiilor. Dacă nu vă place efectul de revenire pe care îl produce, nu ezitați să îl schimbați la ceva mai blând prin variabila --bounceEasing CSS. Uită-te la demonstrația finală cu toate efectele Animație aici:

    Concluzie

    Asta-i tot, prieteni! În timpul acestui tutorial am învățat să creăm dialoguri personalizate de viață fără depinde de orice cadru front-end.

    Sper că v-ați bucurat de rezultatul final și că creația dvs. v-a ajutat să vă actualizați abilitățile din față. Sfârșit

    / P>

    mai multe citiri pe ferestre pop-up

    • wordpress pluginuri
      mai mult de 20 de ani din cele mai bune pluginuri WordPress pentru ferestrele emergente și opt-in
      Nona Blackman
    • designul UI
      Cel mai bun mod de a utiliza ferestrele de dialog (modals) în web design
      Adi Purtila
    • iv id = „8d9769C73c”
      WordPress
      Cum se creează ferestre pop-up spectaculoase în WordPress cu elementelor pro
      Adi purpardila

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *