Kaip sukurti modalinį langą html. Kaip sukurti modalinį langą su css

Norėdami rodyti svarbius pranešimus ar tiesiog svetainėje atliktus pakeitimus, galite naudoti iššokančiuosius langus. Yra dviejų tipų iššokantys langai: įprasti ir modaliniai.

Pastaba: modaliniai langai skiriasi nuo įprastų langų tuo, kad kol modalinis langas atidarytas, vartotojas negali bendrauti su kitais svetainės elementais, kol modalinis langas neuždarytas.

Galite pamatyti modalinio lango pavyzdį naudojant JavaScript naudojant alert() metodą.

Iššokantis langas

Pirmasis žingsnis kuriant iššokantįjį langą yra elemento (ar bet kurio kito elemento) sukūrimas ir jo stilius:

Dokumento pavadinimas .okno ( plotis: 300 piks.; aukštis: 50 piks.; teksto lygiavimas: centre; užpildymas: 15 piks.; kraštinė: 3 piks. vientisas # 0000 cc; kraštinės spindulys: 10 piks.; spalva: # 0000 cc; ) Iššokantis langas! Bandyti "

Tai bus naudojama kaip iššokantis langas. Dabar mes jį paslepiame naudodami rodymo ypatybės reikšmę none ir pridedame nuorodą, kurią spustelėjus bus rodomas iššokantis langas:

Dokumento pavadinimas #okno (plotis: 300 piks.; aukštis: 50 piks.; teksto lygiavimas: centre; užpildymas: 15 piks.; kraštinė: 3 piks. vientisas #0000cc; kraštinės spindulys: 10 piks.; spalva: #0000cc; ekranas: nėra; ) #okno:target (rodymas: blokuoti;) Iššokantis langas! Iššokantis skambutis Išbandykite »

Naudodami pseudoklasę:target pasirenkame ir pritaikome stilius elementui, į kurį buvo nukreipta. Taigi, spustelėjus nuorodą, elemento rodymo ypatybės reikšmė pasikeis iš none į blokuoti .

Dabar turime įdėti jį į puslapio vidurį, kad jis atrodytų kaip iššokantis langas. Padarykite jį absoliučiai išdėstytą ir centruokite vertikaliai ir horizontaliai:

#okno ( plotis: 300 piks.; aukštis: 50 piks.; teksto lygiavimas: centre; užpildymas: 15 piks.; kraštinė: 3 piks. vientisas # 0000 cc; kraštinės spindulys: 10 piks.; spalva: # 0000 cc; ekranas: nėra; /*pozicija ir centras*/ padėtis: absoliutus: 0;

Kitas žingsnis yra paslėpti langą, kai spustelėsite bet kurią puslapio vietą arba patį langą. Norėdami tai padaryti, elementą turime išdėstyti elemento viduje:

Iššokantis langas!

Tada pastatome elementą ir ištempkite jį per visą lango plotį ir aukštį. Nustatome ekraną: nėra; ir nukreipkite mūsų nuorodą į ją:

Dokumento pavadinimas #pagrindinis ( ekranas: nėra; padėtis: absoliuti; viršuje: 0; kairėje: 0; plotis: 100%; aukštis: 100%; ) #okno ( plotis: 300 pikselių; aukštis: 50 pikselių; teksto lygiavimas: centre; užpildymas : 15px kraštinė: #0000cc padėtis: 0 (ekranas: blokas;); Iššokantis skambutis Išbandykite »

Pašalinti ekraną: nėra elemento. (nebereikia, nes dabar slepiame ). Dėl to tėvas dabar paslepia iššokantįjį langą nukreipdamas pasirinkimą į puslapį.

Tai baigia sukurti paprastą iššokantįjį langą.

Modalinis langas

Norėdami sukurti iššokantį modalinį langą, paimkite elementą, suprojektuokite jį ir pridėkite nuorodą, kurią spustelėjus pasirodys:

Dokumento pavadinimas #okno ( plotis: 300 piks.; aukštis: 50 piks.; teksto lygiavimas: centre; užpildymas: 15 piks.; kraštinė: 3 piks. vientisas # 0000 cc; kraštinės spindulys: 10 piks.; spalva: # 0000 cc; ekranas: nėra; padėtis: absoliuti; viršuje : 0; kairysis: 0 ) #langas: tikslinis; Iššokantis skambutis

Kitas žingsnis kuriant visavertį modalinį langą yra pridėti mygtuką, kuris paslėps mūsų langą. Padarysime mygtuką iš įprastos nuorodos, pridėsime ją prie savo ir sukursime:

Dokumento pavadinimas #okno ( plotis: 300 piks.; aukštis: 50 piks.; teksto lygiavimas: centre; užpildymas: 15 piks.; kraštinė: 3 piks. vientisas # 0000 cc; kraštinės spindulys: 10 piks.; spalva: # 0000 cc; ekranas: nėra; padėtis: absoliuti; viršuje : 0; kairysis: 0 langas: langas: 0 12px; : #e6e6ff;)
Uždaryti langą Skambinimo iššokantis langas Pabandykite »

Kad puslapis būtų pritemdytas, kai rodomas modalinis langas, visą esamą lango kodą turite įdėti į papildomą:

Iššokantis langas!
Uždarykite langą

Padėkite pagrindinį ir ištempkite jį per visą lango plotį ir aukštį. Nustatome ekraną: nėra; ir nukreipkite į jį lango skambučio nuorodą.

Vaikui nuimkite ekraną: nėra; (nebereikia, nes tėvai viską paslėps jame). Dėl to dabar vienas iš tėvų yra atsakingas už modalinio lango rodymą ir puslapio fono pritemdymą, o vaikas – tik už paties lango dekoravimą:

Dokumento pavadinimas #zatemnenie ( fonas: rgba(102, 102, 102, 0,5); plotis: 100%; aukštis: 100%; padėtis: absoliutus; viršuje: 0; kairėje: 0; ekranas: nėra; ) #okno ( plotis: 300px: border-radius: 0px: auto: #fff ) .close; ;
Uždaryti langą Skambinimo iššokantis langas Pabandykite »

Pastaba: jei jums reikia, kad vartotojas įeidamas į puslapį iš karto pamatytų iššokantįjį langą (o ne iškviestų jį per nuorodą), tada puslapio adresą reikės įvesti kartu su lango ID (pavyzdžiui, adresas gali atrodo taip: site.ru/papka/documet.

Dar kartą kreipiuosi į modalinių (iššokančių) langų kūrimo temą. Pastaruoju metu vis labiau domiuosi įvairiomis iššokančiųjų langų vykdymo technikomis, nenaudojant javascript, jQuery įskiepių ir kt. Didesnį susidomėjimą kelia galimybė naudoti grynus stilius ir neišsenkantis naujų funkcijų potencialas.
Remiantis kai kurių gerbiamų buržujų raida, šiuo atžvilgiu jie yra gudrūs vaikinai, jie gauna gerų rezultatų kurdami modalinius langus naudodami CSS3. Užduotis, visų pirma, yra pasiekti daugiau ar mažiau stabilų galutinio rezultato suderinamumą tarp naršyklių ir, žinoma, su mažiausiais nuostoliais sumažinti bendrą kodo kiekį tiek HTML, tiek CSS, kad palengvinti ilgai kenčiančių svetainių kūrimo darbuotojų gyvenimą.
Pamatysime, kas atsitiks galų gale, šiuo klausimu šiandien, ir tuo pat metu išmoksime sukurti iššokančiuosius modalinius langus naudojant CSS3 „stebuklingumą“.

Atnaujinta: 2017-10-27


Pirmiausia, visi, kurie domisi šia tema, galite pažvelgti į pavyzdį, kaip veikia modaliniai langai įvairiose versijose, ir atsisiųsti šaltinius:

Ši pamoka neturėtų būti laikoma veiksmų vadovu, nes šiame etape patikimą palaikymą buvo galima pasiekti tik naudojant šiuolaikines naršykles (IE 9+, Firefox, Safari, Opera, Chrome). Atsižvelgiant į tai, kad senovinės IE naršyklės versijos vis dar yra gana populiarios tarp vartotojų, rekomenduoju šį straipsnį žiūrėti kaip į savotišką eksperimentą, CSS3 galimybių demonstravimą.

Gerai, dabar pereikime tiesiai prie tikrojo html kodo išdėstymo ir modalinio lango stiliaus naudojant css3)))

1 veiksmas. HTML

Pirmiausia sukurkime pagrindinį HTML žymėjimą. Kaip matote, pagrindinis dizainas yra gana paprastas, jei atsižvelgsime į modalinių langų ir mygtukų (nuorodų) žymėjimą HTML. Kiekvienas modalinis langas yra ne kas kita, kaip standartinis konteineris, kurio viduje yra tam tikras turinys ir mygtukas „Uždaryti“, suformuotas tik naudojant CSS.

< a href= "#win1" class = "button button-green" >Atidaryti langą 1< a href= "#win2" class = "button button-red" >Atidaryti langą 2< a href= "#win3" class = "button button-blue" >Vaizdo įrašas 3 lange< a href= "#win4" class = "button button-orange" >Nuotrauka lange 4< a href= "#win5" >< img title= "" src= "img/realism_lrg.jpg" width= "150" height= "150" alt= "" /> < a href= "#x" class = "overlay" id= "win1" > < div class = "popup" > < a class = "close" title= "Uždaryti" href= "#close" > < a href= "#x" class = "overlay" id= "win2" > < div class = "popup" >Čia galite patalpinti bet kokį turinį, tekstą su nuotraukomis ar vaizdo įrašais!< a class = "close" title= "Uždaryti" href= "#close" > < a href= "#x" class = "overlay" id= "win3" > < div class = "popup" > < h2>Pavadinimas Čia įterpiate savo vaizdo įrašą arba iš bet kurio trečiosios šalies šaltinio, „YouTube“, „Vimeo“ ir kt. (iframe, įterpti) ...< a class = "close" title= "Uždaryti" href= "page.html" onclick= "return false" > < a href= "#x" class = "overlay" id= "win4" > < div class = "popup" > < img class = "is-image" src= "ваша-картинка.jpg" alt= "" /> < a class = "close" title= "Uždaryti" href= "#close" > < a href= "#x" class = "overlay" id= "win5" > < div class = "popup" > < img class = "is-image" src= "ваша-картинка.jpg" alt= "" /> < a class = "close" title= "Uždaryti" href= "#close" >

Atidaryti langą 1 Atidaryti langą 2 Vaizdo įrašas lange 3 Nuotrauka lange 4 Čia galite patalpinti bet kokį turinį, tekstą su nuotraukomis ar vaizdo įrašais! Pavadinimas Čia įterpiate savo vaizdo įrašą arba iš bet kurio trečiosios šalies šaltinio, „YouTube“, „Vimeo“ ir kt. (iframe, įterpti)...

Aukščiau pateiktame kodo pavyzdyje dėl aiškumo parašiau trumpus paaiškinimus modalinių langų konteineriuose. Pagal analogiją jūs tiesiog turite įdėti bet kokį turinį į iššokančiojo lango div konteinerį, nesvarbu, ar tai paprastas tekstas, nuotraukos ar vaizdo įrašai iš bet kurio trečiosios šalies šaltinio, „YouTube“, „Vimeo“ ir kt. Galite sukurti nuorodas, kad iškviestumėte modalinių langų tekstą, arba suformatuokite jas formoje, kaip parodyta pavyzdyje.

2 veiksmas: CSS

Kitas žingsnis, tai įdomiausias dalykas, svarbu paruošti visus reikiamus stilius mūsų modaliniam langui, suprojektuoti išvaizdą ir pridėti funkcionalumo. Praleidau pagrindinius puslapių stilius, kad nesukelčiau painiavos, o dėl didesnio aiškumo kai kurias taisykles praskiedžiau komentarais:

/* Pagrindiniai pritemdymo sluoksnio ir modalinio lango stiliai */ . perdanga (viršuje: 0; dešinėje: 0; apačioje: 0; kairėje: 0; z-indeksas: 10; ekranas: nėra; /* fono išnykimas */ fono spalva: rgba(0, 0, 0, 0.65); padėtis : fiksuota /* fiksuota padėtis */ žymeklis: numatytasis /* žymeklio tipas */ ) /* aktyvuoti pritemdymo sluoksnį. perdanga: taikinys ( ekranas: blokas; ) /* modaliniai stiliai */ . iššokantis langas (viršuje: - 100%; dešinėje: 0; kairėje: 50%; šrifto dydis: 14 pikselių; z-indeksas: 20; paraštė: 0; plotis: 85%; minimalus plotis: 320 pikselių; maksimalus plotis: 600 pikselių; /* fiksuota padėtis, slenkant langas yra stabilus */ padėtis: fiksuotas padding: 1px solid #383838 - webkit- border- spindulys: 4px; bortelis- spindulys: 4px rgba(0, 0, 0, .22) , 0 19px 60px rgba(0, 0, 0, .3) - ms-box-shadow: 0 15px 20px rgba(0, 0, 0, .22) , 0 19 pikselių 60 pikselių rgba(0, 0, 0, .3) ; -transform: translate(- 50%, - 500% ) ; - ms- transform: translate(- 50%, - 500% ) ; - o- transformuoti: išversti(- 50%, - 500% ) ; transformuoti: išversti(- 50%, - 500% ) ; - webkit- perėjimas: - webkit- transformuoti 0. 6s easy-out; - moz- perėjimas: - moz- transformuoti 0. 6s ease- out; - o- perėjimas: - o- transformuotis 0. 6s palengvėjimas- out; perėjimas: transformuoti 0. 6s ease- out; ) /* aktyvuoti modalinį bloką */ . perdanga: taikinys+. iššokantis langas ( - webkit- transform: translate (- 50%, 0 ) ; - ms- transform: translate (- 50%, 0 ) ; - o- transform: translate (- 50%, 0 ) ; transform: translate (- 50 ) %, 0 ) ; viršuje: 20 % ) /* sudaro uždarymo mygtuką */ . uždaryti ( viršuje: - 10 tšk.; dešinėje: - 10 tšk.; plotis: 20 tšk.; aukštis: 20 piks.; padėtis: absoliutus; užpildymas: 0 ; kraštinė: 2 piks. vientisas #ccc; - žiniatinklio rinkinys - kraštinė - spindulys: 15 piks.; - moz - kraštinė - spindulys : 15px; - ms- kraštinė- spindulys: 15px #000 teksto lygiavimas: 13px/ 20px "Tahoma" , šrifto svoris: paryškintas; 8s; - moz- perėjimas: viskas paprasta. 8s; -ms- perėjimas: viskas paprasta. 8s; -o- perėjimas: viskas paprasta. 8s; perėjimas: viskas paprasta. 8s; ). uždaryti: prieš ( spalva: rgba(255 , 255 , 255 , 0.9 ) ; turinys: "X" ; teksto šešėlis: 0 - 1px rgba(0, 0, 0, 0.9) ; šrifto dydis: 12px; ). uždaryti: užveskite pelės žymeklį (fono spalva: rgba(252, 20, 0, 0.8) ; - webkit - transformuoti: pasukti (360 laipsnių); - moz- transformuoti: pasukti (360 laipsnių); - ms- transformuoti: pasukti (360 laipsnių) ; - o- transformuoti: pasukti(360deg) : pasukti(360deg) ; popup img (plotis: 100 %; aukštis: automatinis; ) /* miniatiūros kairėje/dešinėje */ . nuotrauka kairėje, . nuotrauka dešinėje (plotis: 25%; aukštis: automatinis; ) . pic-left (slankioji: kairė; paraštė: 5px 15px 5px 0;) . pic- right ( plūduriuoti: dešinėje; paraštė: 5 piks. 0 5 piks. 15 piks.; ) /* m-medijos elementai, rėmeliai */ . iššokantis įterpimas, . iššokantis „iframe“ (viršuje: 0; dešinėje: 0; apačioje: 0; kairėje: 0; ekranas: blokas; paraštė: automatinis; minimalus plotis: 320 taškų; didžiausias plotis: 600 taškų; plotis: 100%; ). iššokantis langas h2 ( /* antraštė 2 */ paraštė: 0 ; spalva: #008000; užpildymas: 5 piks. 0 piks. 10 piks.; tekstas - lygiavimas: kairėje; tekstas - šešėlis: 1 piks. 1 piks. 3 piks. #adadad; šrifto svoris: 500; šrifto dydis: 1. 4em šriftų šeima: "Tahoma" , Arial, sans- serif: 1.3 ) /* pastraipos */ . iššokantis langas p ( paraštė: 0 ; užpildymas: 5 piks. 0 )

/* Pagrindiniai išblukimo ir modalinio sluoksnio stiliai : rgba(0, 0, 0, 0.65 pozicija: fiksuota */ žymeklis: numatytasis /* žymeklio tipas */ .overlay:target; ) / * modaliniai langų stiliai */ .popup ( viršuje: -100%; dešinėje: 0; kairėje: 50%; šrifto dydis: 14 pikselių; z indeksas: 20; paraštė: 0; plotis: 85%; min. plotis : 320px ; max-width: 600px, stabilus slinkant spindulys: 4px; -ms-border-radius: 4px; šriftas: 14px 60 tšk. rgba(0,0,0,.3); -ms-box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); -Webkit-transform: išversti(-50%, -500%); -ms-transformuoti: išversti (-50%, -500%); -o-transformuoti: išversti(-50%, -500%); transformuoti: išversti(-50%, -500%); -webkit-transition: -webkit-transform 0.6s palengvinimas; -moz-transition: -moz-transform 0.6s palengvinimas; -o-perėjimas: -o-transformavimas 0.6s palengvinimas; perėjimas: transformavimas 0,6 s palengvinimas; ) /* aktyvuoti modalinį bloką */ .overlay:target+.popup ( -webkit-transform: translate(-50%, 0); -ms-transform: translate(-50%, 0); -o-transform: translate ( -50%, 0) transformuoti (-50%, 0 viršų: 20% ) /* iš uždarymo mygtuko */ .close ( viršuje: -10px; plotis: 20px; aukštis: 20px; -box-shadow: 0px 10px #000; 0px 10px #000; -moz-transition: visi lengvi .8s; -ms-transition: visi lengvi .8s; 9);

Kaip matote, mieli draugai, viskas yra gana paprasta ir nėra jokios bereikalingos painiavos. Jei viską atliksite teisingai, savo arsenale gausite nuostabų įrankį, kuriame galėsite talpinti bet kokį turinį, nesvarbu, ar tai būtų tekstinis turinys, nuotraukos, įvairios registracijos ir atsiliepimų formos, ar vaizdo įrašai iš bet kurio trečiosios šalies šaltinio. Eksperimentuokite su parametrais, keiskite langą kaip norite. Jei įmanoma, pasidalinkite savo patirtimi ar netikėtai iškylančiomis problemomis komentaruose.

O gal tai bus jums įdomu: Papildymai:

Dažnai, net labai dažnai, manęs klausia, kaip tinkamai sustabdyti vaizdo įrašų atkūrimą uždarant modą. langas. Kai uždarote modalinį langą, vaizdo įrašo atkūrimas demonstracijoje sustabdomas. Demonstracijoje naudojau onclick įvykį lango uždarymo mygtukui, nuorodoje nurodant demo puslapio adresą, t.y. puslapis, kuriame yra vaizdo langas:

Galite tiesiog naudoti nuorodą su tuščiu href="" atributu, abiem atvejais puslapis persikrauna ir atitinkamai užsidaro langas ir sustoja vaizdo įrašas, žinoma, ramentas, bet nėra kito efektyvesnio ir pagrįstesnio sprendimo be jungiantis javascript, šiuo metu manęs čia nėra.

< script type= "text/javascript" src= "http://www.youtube.com/player_api" >

Naudodami „JavaScript“ API galite valdyti „Chromeless Player“ ir „YouTube“ įterptąjį grotuvą naudodami „JavaScript“ kodą. Mūsų modaliniam blokui su įterptu vaizdo įrašu vykdomasis js bus toks:

< script>var grotuvas; funkcija YouTubePlayerAPIReady() ( grotuvas = naujas YT. Player("player" ) ; ) $("#stop" ) . spustelėkite (funkcija () ( grotuvas. sustabdyti vaizdo įrašą () ) )

var grotuvas; funkcija YouTubePlayerAPIReady() ( grotuvas = naujas YT.Player("grotuvas"); ) $("#stop").click(function())( player.stopVideo() ))

Spustelėjus mygtuką su id="stop", bus iškviesta funkcija, langas užsidarys ir vaizdo įrašo atkūrimas sustos.
Tačiau turėtumėte suprasti, kad kitoms vaizdo paslaugoms šokiai su tamburinais skirsis))). Nors visada yra pasirinkimas – naudoti jau paruoštus specializuotus įskiepius.

Interneto dizaineriai ir verslininkai, gyvenantys rusakalbėse šalyse, tikriausiai nori turėti galimybę naudoti ne tik anglų kalbos šablonus. Jie taip pat nori turėti prieigą prie paruoštų sprendimų rusų kalba rinkinių. Todėl norėtume atkreipti jūsų dėmesį į naujausią skyrių, kuris dabar pristatomas TemplateMonster prekyvietėje. Verta paminėti, kad kiekvieno šablono tekstas buvo parašytas rankiniu būdu. Be to, norint sukurti įspūdingą internetinį projektą, nereikia jokių pažangių programavimo žinių.

Su visa pagarba, Andrew


3. JQuery modalinio lango, iškviečiamo iš nuorodos, pavyzdys (iš demonstracinės versijos)

Greičiausiai jau ne kartą matėte iššokantį modalinį langą internete – registracijos patvirtinimas, įspėjimas, informacinė informacija, failų atsisiuntimas ir daug daugiau. Šioje pamokoje pateiksiu kelis pavyzdžius, kaip sukurti paprasčiausius modalinius langus.

Paprasto iššokančio modalinio lango kūrimas Pradėkime ieškoti paprasto modalinio lango kodo, kuris iškart pasirodys
jQuery kodas


$(document).ready(function()
{
alert("Tekstas iššokančiame lange");
});

Įklijuokite kodą bet kurioje puslapio dalyje. Iš karto po puslapio įkėlimo, be jokių komandų, pamatysite langą, kuris atrodo taip:


Tačiau šis kodas bus vykdomas po to, kai visas puslapis bus įkeltas į naršyklę. Mūsų pavyzdyje, įkėlus puslapį su vaizdais, pasirodys paprastas iššokantis langas:


$(langas).load(function()
{
alert ("Puslapis baigtas įkelti!)");
});

„jQuery“ modalinio lango iškvietimas iš nuorodos su CSS Kitas žingsnis yra sukurti modalinį langą, kai spustelėsite nuorodą. Fonas pamažu tamsės.


Dažnai galite pamatyti, kad tokiuose languose yra prisijungimo ir registracijos formos. Eikime prie reikalo

Pirma, parašykime html dalį. Šį kodą įdedame į jūsų dokumento turinį.

Modalinio lango iškvietimas



Modalinio lango tekstas
Uždaryti
Tekstas modaliniame lange.


CSS kodas. Arba atskirame css faile, arba galvoje.


kūnas(
šriftų šeima: verdana;
šrifto dydis: 15 pikselių;
}
.link (spalva: #fff; teksto dekoravimas: nėra)
.link:hover (spalva:#fff; text-decoration:pabraukta)
#kaukė (
padėtis: absoliutus;
kairėje:0;
viršuje:0;
z indeksas: 9000;
background-color:#000;
ekranas: nėra;
}
#boxes.window (
padėtis: absoliutus;
kairėje:0;
viršuje:0px;
- viršuje: 40 pikselių;
plotis: 440 pikselių;
aukštis: 200px;
ekranas: nėra;
z indeksas: 9999;
pamušalas: 20px;
perteklius paslėptas;
}
#dėžutės #dialogas (
plotis: 375 pikseliai;
aukštis: 203px;
pamušalas: 10px;
fono spalva:#ffffff;
}
.top(
padėtis: absoliutus;
kairėje:0;
viršuje:0;
plotis: 370 pikselių;
aukštis: 30px;
fonas: #0085cc;
padding: 8px 20px 6px 10px;
}
.Uždaryti(
plūdė: dešinė;
}
.turinys(
paminkštinimas-viršus: 35px;
}

„jQuery“ kode sutelksime dėmesį į modalinio lango ir kaukės padėtį, mūsų atveju – laipsnišką fono tamsėjimą.

Dėmesio! Nepamirškite į dokumento antraštę įtraukti biblioteką!


Bibliotekos prijungimas iš Google svetainės. Na, pats jQuery kodas.

jQuery kodas


$(document).ready(function() (
$("a").click(function(e) (
e.preventDefault();
var id = $(this).attr("href");
var maskAukštis = $(dokumentas).aukštis();
var maskWidth = $(langas).width();
$("#kaukė").css(("width":maskWidth,"height":maskHeight));
$("#kaukė").fadeIn(1000);
$("#mask").fadeTo("lėtas",0.8);
var winH = $(langas).aukštis();
var winW = $(langas).width();
$(id).css("viršus", winH/2-$(id).height()/2);
$(id).css("left", winW/2-$(id).width()/2);
$(id).fadeIn(2000);
});
$(".langas .uždaryti").click(function (e) (
e.preventDefault();
$("#kaukė, .langas").hide();
});
$("#kaukė").click(function () (
$(tai).hide();
$(".langas").hide();
});
});

Šiais laikais įvairiose svetainėse, be jQuery, tapo įprastas visų rūšių iššokantysis modalinis langas, skirtas registracijai, autorizacijai, informacijos langai, įvairių formų ir dydžių , paprastam ir patogiam tokių iššokančiųjų langų kūrimui – pavyzdžiui, tą patį „Shadowbox“.

Tokių iššokančiųjų langų išvaizda, dydis ir dizainas yra visiškai kitoks - su perdanga, šešėliais, animacija - visko nesuskaičiuosi. Vienintelis jų bruožas yra galbūt tai, kad jie dažniausiai rodomi pačiame puslapio centre – tiek horizontaliai, tiek vertikaliai. Ir šis centravimas atliekamas naudojant JS. Aš nesigilinsiu į šių skaičiavimų detales, juos aprašysiu tik trumpai:

Iššokančiojo lango HTML kodas paprastai turi tokią struktūrą:


... -- Iššokantis langas su turiniu -->

Ir CSS ( čia ir toliau sąmoningai neparašysiu kai kurių ypatybių, kurios būtinos tik kai kurioms naršyklėms ir jų versijoms, palikdamas tik pačias paprasčiausias):

Popup__overlay(
padėtis: fiksuota;
kairėje: 0;
viršuje: 0;
fonas : #000 ;
neskaidrumas: .5;
filtras: alfa(nepermatomumas=50);
z indeksas: 999
}
.popup(
padėtis: absoliuti;
plotis: 20%;
z indeksas: 1000;
kraštinė : 1px solid #ccc ;
fonas: #fff
}

JS nustato naršyklę ir naršyklės versiją ir pagal tai apskaičiuoja darbo srities matmenis bei paties iššokančiojo lango matmenis (jei jie nenurodyti), o tada atliekami paprasti skaičiavimai pagal jo viršutinio kairiojo kampo padėtį ( css ypatybių kairėje ir viršuje .popup). Daugelis papildinių taip pat reaguoja į puslapio dydžio keitimą, kiekvieną kartą perskaičiuodami visą dalyką, kad iššokantis langas būtų tiksliai darbo srities centre.

Iš prigimties esu perfekcionistė ​​(žinau, kartais tai yra blogai), dažnai nerimauju dėl net mažų smulkmenų, stengiuosi šias detales patobulinti ir suteikti maksimaliai įmanomo išplėtimo, ir mane tai užkabino. ypatingas visų šių įskiepių darbo taškas. Kilo mintis, kad visas iššokančiojo lango pozicionavimo darbas gali būti perkeltas iš JS pečių į pačios naršyklės pečius, tai yra, šį darbą galima atlikti naudojant CSS.

Tai mes darysime.

Žemiau pateiksiu iššokančiojo lango, kuris veikia visose pagrindinėse pagrindinių naršyklių versijose, pavyzdį. Kad jis tinkamai veiktų IE
< div class ="popup">

Ir šiek tiek CSS:

Popup__overlay(
padėtis: fiksuota;
kairėje: 0;
viršuje: 0;
plotis: 100%;
aukštis: 100%;
z indeksas: 999
}
.popup(
}

Fiksuoti dydžiai Paprasčiausias variantas. Nereikia išradinėti nieko naujo:

Iššokantis langas (
liko: 50%;
viršuje: 50%;
plotis: 400 pikselių;
aukštis: 200 pikselių;
paraštė kairėje : -200 pikselių ;
paraštė viršuje: -100 piks
}

Pusės pločio ir aukščio neigiamos paraštės yra banalios ir nuobodžios, joje nėra nieko originalaus.

Iššokančiojo lango dydis priklauso nuo turinio Pirma, horizontalus lygiavimas – atrodo, kad tai lengviau. Jei iššokantis langas yra fiksuoto pločio, pakaks:

Iššokantis langas (
paraštė: automatinė
}

Tai niekaip neturės įtakos vertikaliam išlygiavimui, ir, beje, jei jums užtenka tik horizontalaus išlygiavimo, galite sustoti, nurodydami kitą viršutinę iššokančiojo lango paraštę. Bet mums to neužtenka! Pirmyn.

Vertikalus lygiavimas. Štai čia pasidaro įdomu. Žinoma, lentelė arba lentelės emuliacija naudojant display: table & display: table-cell galėtų atlikti šią užduotį be jokių problemų, tačiau atlikti šį darbą senoje IE yra brangiau. Lentelė taip pat dingsta – dėl akivaizdžių priežasčių.

Taigi, marža nebereikalinga – mes nežinome dydžių. Prisiminkime, kokių savybių yra panašaus poveikio. Taip, suderinkite tekstą. Bet tik įterptiems elementams. GERAI. Atrodo, kad pats Dievas įsakė naudoti ekraną: inline-block - bloko elementas, kuriam galima pritaikyti įterptųjų elementų savybes. Palaikius šią nuosavybę visose naršyklėse, viskas taip pat tvarkoje. Kodas tampa maždaug taip:

Popup__overlay(
padėtis: fiksuota;
kairėje: 0;
viršuje: 0;
plotis: 100%;
aukštis: 100%;
z indeksas: 999;
teksto lygiavimas: centre
}
.popup(
ekranas: inline -blokas;
vertikalus lygiavimas: viduryje
}

Lieka vertikalus lygiavimas – vertikalus lygiavimas mums tiks. Bet kurioje kitoje situacijoje taip pat būtų tikslinga naudoti eilutės aukštį, tačiau kadangi mes neturime fiksuoto puslapio aukščio (šiame kontekste eilutės aukščio), čia jo naudoti negalima. Vienas iš gudrybių, galinčių padėti, yra vertikalus nežinomo dydžio elementų išlyginimas. Tiksliai prisimenu, kad šį metodą radau pas Habré, bet, deja, nuorodos į tą temą neradau. Šis metodas susideda iš šių veiksmų: pridedamas nulinio pločio ir 100% pirminio aukščio eilutės bloko elementas, kuris „išplečia“ eilutės aukštį iki 100% pirminio aukščio, tai yra iki puslapio darbo aukščio. plotas. Padarykime tai elegantiškesnį – vietoj nereikalingo žymėjimo naudosime pseudoelementus:

Popup__overlay :after (
ekranas: inline -blokas;
plotis: 0;
aukštis: 100%;
vertikalus lygiavimas: vidurys;
turinys : ""
}

Belieka pridėti permatomą perdangos pritemdymą – rgba tai susitvarkys. Viskas! Dabar iššokančiojo lango padėtis valdoma tik naršyklės įrankiais CSS lygiu.

Funkciniu požiūriu paprastas modalinis langas, visiškai pagamintas grynu CSS, kuriame galite įdėti įvairias funkcijas, kurias norite iškviesti svetainėje. Tai tikriausiai yra vienas iš daugelio, su kuriais susidūriau renkantis modalinius langus, atsižvelgiant į jo nustatymus ir diegimą. Tačiau pagrindinis dalykas yra jo funkcionalumas, kuris nebus prastesnis už kitus. Jis taip pat pagal numatytuosius nustatymus yra šviesaus atspalvio, kai viršutiniame dešiniajame kampe yra kryžiaus formos mygtukas.

Kuris bus naudojamas funkcijai išjungti arba tiesiog dingti rėmeliui, kur net ir ant šio mažo elemento atsiranda spalvų paletės keitimo efektas. Dabar žiniatinklio valdytojas gali įdėti jį į svetainę ir įdėti aprašą arba operatorius, kurie gali rodyti skirtingas kategorijas, pvz., statistiką ar informatorių.

Bet dalykas yra tas, kad jei turite tamsų išteklių stilių, galite greitai pakeisti stilių arba, tiksliau, pritaikyti jį prie originalaus dizaino. Čia yra vienas iš standartinių metodų, kaip sukurti gryną CSS modaliniame lange, kuris bus paleistas spustelėjus mygtuką po nuoroda su HTML susiejimu. Pats mygtukas labiau skirtas matomumui, kur stiliuose, pašalinus vieną klasę, išliks pavadinimas, kurį galima dėti arba navigacijoje, arba valdymo pulte, kur yra pagrindinė funkcionalumas arba svetainės navigacija.

Tai yra tikrinant, ar viskas veikia gerai:

mob_info