Na webových stránkách je zcela běžné vidět modální okna a všechna se používají pro různé úkoly. Ve skutečnosti se jedná o poměrně výkonný nástroj, který vám umožní učinit rozhraní webu interaktivnějším a pohodlnějším. Modální okna lze například použít pro různé formuláře, jako je autorizační formulář, formulář zpětná vazba, objednávání zboží a nikdy nevíte.

V tomto příspěvku se podíváme na příklad, jak vytvořit jednoduché modální okno pomocí pomocí jQuery a CSS. Zvláštnost tento příklad v tom, že zde není vyžadován, tedy s výjimkou samotné knihovny jQuery.

Kód modálního okna umístíme na stránku:

Otevřete modální okno

Jak můžete vidět z označení, blok samotného modalu je div s atributem id= modální_forma, který obsahuje prvek span s id= modal_close. Tento prvek bude sloužit jako tlačítko pro zavření modálního okna, navíc pod blokem je blok div s atributem id= překrytí, který zároveň slouží ke ztmavení pozadí. Modální okno se otevře odkazem s třídou modální.

CSS pro modální okno

#modal_form ( width: 300px; height: 300px; border-radius: 5px; border: 3px #000 solid; background: #fff; position: fixed; top: 45%; left: 50%; margin-top: -150px; margin-left: -150px; display: none; neprůhlednost: 0; z-index: 5; padding: 20px 10px; ) #modal_form #modal_close ( šířka: 21px; výška: 21px; pozice: absolutní; nahoře: 10px; vpravo: 10px; kurzor: ukazatel; displej: blok; ) #overlay ( z-index:3; position:fixed; background-color:#000; opacity:0.8; -moz-opacity:0.8; filter:alpha(opacity=80) ; šířka: 100 %; výška: 100 %; nahoře: 0; vlevo: 0; kurzor: ukazatel; zobrazení: žádné; )

Pro modální_forma nastavili jsme pevnou šířku a výšku a pak polohu vycentrovali do středu obrazovky. Pro podložení modálního okna ( překrytí) nastavíme velikost na šířku obrazovky, vyplníme průhledností a také ji ve výchozím nastavení skryjeme. zvláštní okamžik s z-index, modal by měl mít největší ze všech prvků na stránce a obal by měl mít největší ze všech prvků kromě samotného modalu.

Nyní k tomu nejzákladnějšímu, toto je kód javascriptu. Pro modální okno budou použity dvě hlavní události, jedná se o jeho otevření - kliknutí na prvek s třídou modální, v našem případě se jedná o odkaz a zavření modálního okna je kliknutím na obálku ( překrytí), nebo kliknutím na tlačítko Zavřít, v našem případě se jedná o prvek span s id= modal_close.

$(document).ready(function() ( $(".modal").click(function(event)( event.preventDefault(); $("#overlay").fadeIn(400, // animace zobrazení obalu function ()( // dále zobrazí mod. okno $("#modal_form") .css("display", "block") .animate((opacity: 1, top: "50%"), 200); ) ); )); // zavře modální okno $("#modal_close, #overlay").click(function()( $("#modal_form") .animate((opacity: 0, top: "45%") , 200, // snížení průhlednosti function()( // po animaci $(this).css("display", "none"); // skrytí okna $("#overlay"). fadeOut(400); // skrýt pozadí ) ); )); ));

S animate měníme vertikální polohu horní stejně jako transparentnost neprůhlednost a tímto dostáváme zajímavý efekt. Podobný efekt se používá jak při otevření okna, tak při jeho zavření. Rozdíl je v tom, že se změní pořadí použití vlastností pro bloky, čímž se vizualizuje otevírání a zavírání okna.


3. Příklad modálu jQuery volaného pomocí odkazu (s ukázkou)

S největší pravděpodobností jste již více než jednou na internetu viděli vyskakovací modální okno - potvrzení registrace, varování, referenční informace, nahrávání souborů a další. V tomto tutoriálu nabídnu několik příkladů, jak vytvořit nejjednodušší modální okna.

Vytvořte jednoduché modální vyskakovací okno

Začněme uvažovat o kódu nejjednoduššího modálního okna, které se okamžitě objeví
kód jquery


Vložte kód kamkoli dovnitř tělo vaši stránku. Ihned po načtení stránky, bez jakýchkoli příkazů, uvidíte okno jako toto:


Následující kód se ale spustí po načtení celé stránky v prohlížeči. V našem příkladu po načtení stránky s obrázky vyskočí jednoduché vyskakovací okno:

Volání modálu jQuery z odkazu s CSS

Dalším krokem je vytvoření modální okno při kliknutí na odkaz. Pozadí bude pomalu tmavnout.


Často můžete vidět, že přihlašovací a registrační formuláře jsou umístěny v takových oknech. Pusťme se do práce

Pro začátek si napišme html část. Tento kód umístíme do těla vašeho dokumentu.

Vyvolání modálního okna



Text modálního okna
zavřít

Text v modálním okně.



CSS kód. Buď v samostatném souboru css nebo v
V kódu jQuery se zaměříme na pozici modálu a masky, v našem případě na postupné ztmavování pozadí.

Pozornost! Nezapomeňte do hlavy dokumentu zahrnout knihovnu!


Připojení knihovny z webu Google. No, samotný kód jQuery.

kód jQuery

Nedílnou součástí jsou modální okna moderní web design, pomocí nich se vývojář může uchýlit k metodě smyčkování na jedné stránce a nepřesměrování návštěvníka na pomocné stránky. V tomto tutoriálu se podíváme na to, jak vytvořit úžasná modální okna s rozmazaným pozadím pro web s pomocí jQuery a CSS3. Díky těmto pravidlům vytvoříme při zobrazení okna neostré pozadí, které bude poutat pohled návštěvníka pouze na potřebné informace na stránce.

Modály rozmazaného pozadí s CSS3

Ekonomické zprávy jsou nejlepší pouze zde: Drobakha

Animace okna bude nastavena tak, že po kliknutí na tlačítko vzhledu se okno animuje shora dolů, přičemž se automaticky zvýší rozostření pozadí.

Krok 1: HTML

Budeme mít kontejner, který bude obsahovat: nadpis, popis, poté přidáme třídu pro tlačítko s třídou toggleModal pro otevření modálního okna:

záhlaví

Popis

Potom musíme přidat třídu modální je-aktivní, tato třída bude zodpovědná za volání modálního okna, modální_hlavička je zodpovědný za nadpis a jeho styling okna.

Krok 2: CSS

Nyní přejdeme ke stylování, prvním krokem je třída knoflík, která bude zodpovědná, uhodli jste, za tlačítka na webu, nastavili jsme pro něj správné parametry zobrazení:

Tlačítko ( pozadí: žádné; klip na pozadí: vycpávka; zobrazení: vložený blok; ohraničení: 0; výběr uživatele: žádný; -webkit-touch-callout: žádný; -vzhled-webkitu: tlačítko; -webkit-user -select: none; -moz-user-select: none; -ms-user-select: none; )

Kontejner ( pozice: relativní; okraj: 0 automaticky; max. šířka: 960 pixelů; velikost pole: border-box; padding-top: 40 pixelů; )

článek ( background: #fff; padding: 20px; margin-bottom: 40px; border-radius: 5px; ) .modal ( display: none; position: fixed; top: 50%; width: 100%; height: auto; margin -top: -150px; background-color: $color-white; border-radius: 3px; z-index: 999; box-shadow: 0px 1px 3px 0px darken($color-bg, 10%); @media #( $small) ( vlevo: 50 %; okraj-left: -260px; max-width: 520px; ) &.is-active ( display: block; animace: 1s linear slide; ) .inner ( position: relativní; padding: 20px ; ) ) .modal__header ( border-bottom: 1px solid darken($color-bg, 5%); ) .modal__footer (text-align: center; button ( display: inline-block; ) )

Styly jsou poměrně jednoduché, jsou uloženy v samostatném souboru a neměly by způsobit potíže při jejich úpravě vývojáři, který se někdy setkal s CSS.

Krok 3JS

Naší poslední, ale neméně důležitou, bude instalace automatického rozostření pozadí při zobrazení menu a také klikatelnost odkazů, k tomu nám pomohou malá pravidla. JS:

$("body").addClass("je-rozmazané"); $(".toggleModal").on("click", funkce (událost) ( event.preventDefault(); $(".modal").toggleClass("is-active"); $("body").toggleClass ("je-rozmazané"); ));

Výsledkem jsou nádherná modální okna, která lahodí oku návštěvníka a nezatěžují váš design.

1. Modální okno na jQuery "Simple Modal Box"

2. plugin jQuery "LeanModal"

Zobrazení obsahu v modálních oknech. Chcete-li vidět plugin v akci na ukázkové stránce, klikněte na odkaz: Registrační formulář nebo Základní obsah.

3. Plugin jQuery "ToastMessage"

Vyskakovací zprávy. Plugin ve dvou verzích. V jednom případě zprávy zmizí samy o sobě, po určité době, ve druhé implementaci, abyste mohli zprávu zavřít, musíte kliknout na tlačítko.

4. Obsah, který se objeví v modálním okně

Odhalit plugin. Chcete-li vidět plugin v akci, klikněte na tlačítko "Fire A Reveal Modal" na stránce ukázky.

5. Pěkná dialogová okna

Kliknutím na křížek na ukázkové stránce uvidíte plugin v akci.

6. Modální okno Mootools, zásuvný modul MooDialog

7. Vyskakovací panel jQuery v horní části obrazovky

8. jQuery Popup

Plugin jQuery pro zobrazení kontaktního formuláře ve vyskakovacím okně.

10. Plugin MooTools "LightFace" pro implementaci dialogů na Facebooku

Dialogová okna ve stylu Facebooku. Kromě statických informací můžete do oken vkládat obrázky, snímky, požadavky Ajaxu. Mnoho nastavení pro plugin, velmi výkonný nástroj. Vypadá velmi stylově a funkčně. Chcete-li zobrazit příklady s různým obsahem, postupujte podle odkazů na stránce s ukázkou.

11. Modální okno jQuery

Úhledný vyskakovací dialog jQuery.

12. Modály jQuery

Pěkná modální vyskakovací okna. Tři styly. Ukázková stránka má 3 odkazy na okna volání.

13. Modály jQuery

Vyskakovací modální okna několika typů. Chcete-li vidět plugin v akci, klikněte na odkaz na ukázkové stránce.

15. Vyskakovací zpráva v horní části stránky

Zpráva se zobrazí v horní části stránky, která je naopak šedě. Kliknutím na štítek „Klikněte na mě“ na stránce ukázky zobrazíte vyskakovací zprávu. Kliknutím na křížek jej zavřete. Implementováno pomocí jQuery.

16. Modální okno "ModalBox" v javascriptu

Implementace moderních modálních dialogů bez použití vyskakovacích oken a opětovného načítání stránky. Na stránce ukázky klikněte na tlačítko "Spustit ukázku" a uvidíte, jak skript funguje.

17. Plugin "Leightbox" pomocí knihovny Prototype

Plugin pro zobrazování obsahu v modálních oknech.

Když mluvíme o různých technikách vytváření stránek, bylo by absurdní nemluvit o některých způsobech vytváření modálních oken. Nebudeme mluvit o účelu, užitečnosti a vznikajících problémech používání vyskakovacích, modálních oken. Podívejme se jen na jeden z mnoha příkladů vytváření takových oken.
Existují situace, kdy není možné použít speciální pluginy, například jako a, takže stojí za to pochopit, jak si můžete vytvořit svůj vlastní.

Podívejme se, jak na to:

HTML

Začněme přidáním značek s následujícími atributy:

  • href - #?w=500 určuje šířku okna
  • rel je jedinečný atribut pro každé okno
  • class="poplight" – třída pro zobrazení vyskakovacího okna
< a href= "#?w=500" rel= "popup_name" class = "poplight" >Viz Okno v akci - Šířka = 500px

Viz Okno v akci - Šířka = 500px

Dále musíme vytvořit vložené označení pro vyskakovací okno. Můžete jej umístit kamkoli na stránku, například do spodní části obsahu. Všimněte si, že vyskakovací id odpovídá atributu relštítek
Tím se spojí odkaz a vyskakovací okno.

A tak jsme vymysleli umístění našeho okna na stránce, nyní jej ozdobíme pomocí stylů, dáme mu decentní vzhled.

Rozvržení CSS

Pro větší přehlednost jsem sepsal několik vysvětlení parametrů stylu našeho okna. Protože vyskakovací okna mohou mít různé velikosti, v CSS je neuvádíme popup_block okraje okna, vypočítat požadovanou velikost, to je právě úkol pro .

#fade ( display : none ; /*-- výchozí je skrytý--*/ pozadí: rgba (7, 87, 207, 0,8); poloha : pevná ; vlevo: 0 nahoře: 0; šířka: 100% výška: 100% neprůhlednost: 0,80 z-index: 9999; ) .popup_block ( display : none ; /*--skryto ve výchozím nastavení--*/ pozadí : #fff ; výplň: 20px border : 8px solid rgb (134 , 134 , 134 ) ; plavat vlevo ; velikost písma: 85% poloha : pevná ; horní : 50 % ; zbývá: 50 % barva : #000 ; maximální šířka: 750 pixelů min-width : 320px ; výška : auto ; z-index: 99999; /*--CSS3 box-shadow--*/-webkit-box-shadow: 0px 0px 20px #000 ; -moz-box-shadow: 0px 0px 20px #000 ; box-shadow : 0px 0px 20px #000 ; /*--Zaoblení rohů CSS3--*/-webkit-border-radius: 12px ; -moz-border-radius: 12px ; border-radius : 12px ; ) .popup_block p ( font-weight : 400 ; padding : 0 ; margin : 0 ; color : #000 ; line-height : 1.6 ; ) .popup_block h2 ( margin : 0px 0 10px ; color : rgb, 343 ); font-weight : 400 ; text-align : center ; text-shadow : 1px 1px 2px #0D0C0C ; ) /* z tlačítka zavřít */.close ( background-color : rgba (61 , 61 , 61 , 0.8 ); border : 2px solid #ccc ; height : 25px ; line-height : 20px ; position : absolute ; right : -17px ; font-weight : bold ; text-align : center ; text-decoration : none ; padding : 0 ; top : -17px ; width : 25px ; -webkit-border-radius: 50 % ; -moz-border-radius: 50 % ; -ms-border- radius: 50 % ; -o-border-radius: 50 % ; border-radius : 50 % ; -moz-box-shadow: 1px 1px 3px #000 ; -webkit-box-shadow: 1px 1px 3px #000 ; box- shadow : 1px 1px 3px #000 ; ) .close : before ( color : rgba (255 , 255 , 255 , 0.9 ) ; content : "X" ; font-size : 12px ; text-shadow : 0 (10px rgba 0 , 0 , 0,9 ) ; ) .close : hover ( barva pozadí : rgba (252 , 20 , 0 , 0,8 ) ; ) .shadow ( box-shadow : 4px 4px 10px #857373 ; -webkit-box-shadow 4px 10px #857373 ; -moz-box-shadow: 4px 4px 10px #857373 ; padding : 0 ;) /*--pevné umístění pro IE6--*/* html #fade ( pozice : absolutní ; ) * html .popup_block ( pozice : absolutní ; )

#fade ( zobrazení: žádné;/*--ve výchozím nastavení skryté--*/ pozadí: rgba(7, 87, 207, 0,8); poloha: pevná; vlevo: 0; nahoře: 0; šířka: 100 %; výška: 100 %; neprůhlednost: 0,80; z-index: 9999; ) .popup_block ( display: none; /*--skryté ve výchozím nastavení--*/ pozadí: #fff; padding: 20px; border: 8px solid rgb(134, 134, 134); plovoucí: vlevo; velikost písma: 85 %; poloha: pevná; horní: 50 %; vlevo: 50 %; barva: # 000; max. šířka: 750 pixelů; minimální šířka: 320 pixelů; výška: auto ; z-index: 99999; /*--CSS3 box-shadow--*/ -webkit-box-shadow: 0px 0px 20px #000; -moz-box-shadow: 0px 0px 20px #000; box-shadow: 0px 0px 20px #000; /*--CSS3 zaoblení rohů--*/ -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; ) .popup_block p ( font-weight: 400 ; padding: 0; margin: 0; color: #000; line-height: 1.6;) : center; text-shadow: 1px 1px 2px #0D0C0C; ) /* z tlačítka pro zavření */ .close ( backgro und-color: rgba(61, 61, 61, 0,8); ohraničení: 2px solid #ccc; výška: 25px; line-height: 20px; pozice: absolutní; vpravo: -17px; váha písma: tučné; text-align: center; text-dekorace: žádná;výplň: 0; horní: -17px; šířka: 25px -webkit-border-radius: 50 %; -moz-border-radius: 50 %; -ms-border-radius: 50 %; -o-border-radius: 50 %; hraniční poloměr: 50 % -moz-box-shadow: 1px 1px 3px #000; -webkit-box-shadow: 1px 1px 3px #000; box-shadow: 1px 1px 3px #000; ) .close:before ( barva: rgba(255, 255, 255, 0,9); obsah: "X"; velikost písma: 12px; stín textu: 0 -1px rgba(0, 0, 0, 0,9); ) .close:hover ( barva pozadí: rgba(252, 20, 0, 0,8); ) .shadow ( box-shadow: 4px 4px 10px #857373; -webkit-box-shadow:4px 4px 10px #857373; -moz- box-shadow:4px 4px 10px #857373; padding:0; ) /*--pevné umístění pro IE6--*/ *html #fade ( pozice: absolutní; ) *html .popup_block ( pozice: absolutní; )

Se vznikem okna a jeho vzhled pomocí css si myslím, že nebudou žádné zvláštní potíže. Styly lze psát přímo na HTML stránku, mezi značkami a, nebo jej můžete vložit do samostatného souboru vašich stylů, obvykle do tohoto souboru styl.css, nebo něco takového.

nastavení jquery

Pro plný provoz modálního okna je potřeba připojit jQuery, kteří nejsou obeznámeni s prací této knihovny, si můžete přečíst.

No, půjdeme dál. nejvíc můžeš Nejnovější verze jQuery z webu knihovny, nebo použijte samostatný soubor hostovaný v útrobách Google a propojte jej s dokumentem v sekci před závěrečnou značkou umístěním tohoto řádku:

V dalším kroku zvažte náplň a funkce plugin jquery, pro aktivaci našeho vyskakovacího okna obsahuje kód některá vysvětlení pro lepší pochopení toho, co děláme.

plugin jquery

$(dokument) . připraveno(funkce()( //Při kliknutí na odkaz s třídou poplight a atributem href značky s #$("a.poplight" ) . click(function () ( var popID = $(this) . attr("rel" ) ; //získáme název okna, důležité je při přidávání nových nezapomenout změnit název v atributu rel odkazu var popURL = $(toto) . attr("href") ; // získat velikost z atributu href odkazu //požadavek a proměnné z href url varquery=popURL. rozdělit("?"); var dim= dotaz[ 1 ] . rozdělit("&"); var popWidth = dim[ 0]. split("=" ) [ 1 ] ; //hodnota řetězce prvního dotazu // Přidejte do okna tlačítko pro zavření$("#" + popID) . fadeIn() . css(( "width" : Number( popWidth) ) ) . předřadit( "" ) ; //Definování okraje (margin) pro zarovnání na střed (vertikálně a horizontálně) - přidáme 80 k výšce/šířce s odsazením + šířkou okraje definovanou v css var popMargTop = ($("#" + popID) . height() + 80 ) / 2 ; var popMargLeft = ($("#" + popID) . width() + 80 ) / 2 ; //Nastavit velikost odsazení$("#" + popID) . css(( "margin-top" : - popMargTop, "margin-left" : - popMargLeft ) ); // Přidá poloprůhledné stínované pozadí$("tělo") . připojit("
" ) ; //kontejner div se zapíše před značku. $("#fade" ) . css(( "filtr" : "alpha(opacity=80)" ) ). fadeIn() ; // průsvitnost vrstvy, filtr pro hloupé IE vrátit false ; )); //Zavřete okno a ztmavte pozadí$(dokument) . on("click" , "a.close, #fade" , function () ( //zavřít kliknutím mimo okno, tzn. v pozadí...$("#fade , .popup_block" ) . fadeOut(funkce () ( $("#fade, a.close" ) . remove() ; // odeznít)); vrátit false ; )); ));

$(document).ready(function()( //Při kliknutí na odkaz s atributem značky poplight a href c # $("a.poplight").click(function() ( var popID = $(this).attr("rel"); //získáme název okna, je důležité nezapomenout název změnit v atributu rel odkazu při přidávání nových var popURL = $(this).attr("href"); //získáte velikost z atributu href odkazu //query a proměnné z href url var query= popURL.split( "?"); var dim= query.split( "&"); var popWidth = dim.split("="); //hodnota prvního řetězce dotazu //Přidat do okna tlačítko pro zavření $("#" + popID).fadeIn().css(( "width": Number(popWidth) )).prepend(""); //Definování okraje (margin) pro zarovnání na střed (vertikálně a horizontálně) - k výšce přidáme 80 /width s odsazením + šířka ohraničení definovaná v css var popMargTop = ($("#" + popID).height() + 80) / 2; var popMargLeft = ($("#" + popID).width() + 80 ) / 2; //Nastavit velikost odsazení $("# " + popID).css(( "margin-top" : -popMargTop, "margin-left" : -popMargLeft )); //Přidat průsvitné zatemňovací pozadí $("body").append("

"); //kontejner div se zapíše před značku. $("#fade").css(("filtr" : "alpha(opacity=80)")).fadeIn(); //průsvitnost vrstvy, filtr pro stupidní IE return false; )); //Zavřete okno a zeslabte pozadí $(document).on("click", "a.close, #fade", function() ( //zavřete kliknutím mimo okno, tj. na pozadí... $ ( "#fade , .popup_block").fadeOut(function() ( $("#fade, a.close").remove(); // fade out )); return false; )); ));

Závěr:

Obecně platí, že pokud se nedostanete do džungle a nebudete se zatěžovat přebytečným kódem abrakadabra, naše úžasné modální okno je připraveno k použití a čeká na vaše myšlenky přepsané do textu nebo jakéhokoli jiného užitečné informace.
Pro ty, kteří by chtěli pomocí modálního okna umístit video nebo do něj velké obrázky, jsem přesto doporučil použít speciální pluginy jako , protože výše uvedený příklad modálního okna je určen spíše pro lehké a nepříliš těžké informace, i když na přání to není problém.

Příště to určitě řeknu a ukážu na příkladu a určitě se mnozí budou zajímat o další objekty třetích stran ve vyskakovacím okně. Takže zůstaňte naladěni a zůstaňte naladěni na aktualizace!

Aktualizace: Verze dm-modal.js v1.3 (15. 1. 2017)
Opraveno: Nahrazena zastaralá funkce .live() pomocí syntaxe href*=\\#. Plugin nyní funguje s aktuální verze jQuery knihovny

To je vše! Doufám, že dostanete další užitečnou lekci.

Se vší úctou, Andrew