Prijazni popup

Sej verjetno poznate tistega baw bawa, ki se ga vsi tako bojijo ali pa iz njega počnejo celo znanost, pri odpiranju oken, potem tukaj nastopi še kakšna znanost, kako pretentati blokiranje popup oken, ali pa kakšna znanost pri odpiranju lightbox, graybox, ali kakšnih drugih oken. No stvar je res povsem preprosta z uporabo jquerya. Gre samo za prikazovanje skritih delov HTML kode in nič drugega.

Kot rečeno gre za to, da se prikaže del kode, ki naj bi se drugače odprl v popup oknu, tukaj pa se odpre kar na strani in pogled se avtomatično fokusira s pomočjo zatemnjenega-prosojnega ozadja. Kako do tega?

Najprej nastavimo določeno html kodo, pa da ne bomo spreminjali že obstoječe kode, lahko samo wrapamo celotno kodo v nek div, pa naj bo to div, ki ima id=okno. To izgleda nekako tako:

<table width="250" border="0" cellspacing="0" cellpadding="0">
<tr>
<th bgcolor="#99CC00">Ime:</th>
<th bgcolor="#99CC00">Priimek:</th>
</tr>
<tr>
<td>Franci</td>
<td>Pomagej</td>
</tr>
</table>

Da pa vse to wrapamo v en div, kot smo rekli zgoraj in zraven dodamo še en div, ki bo predstavljal naše zatemnjeno ozadje, pa to izgleda nekako takole:

&lt;div id="bg" style="display:none;"&gt;&lt;/div&gt;
&lt;div id="okno" class="okno" style="display:none;"&gt;
&lt;div style="position:absolute; right:-10px; top:-10px;"&gt;&lt;a href="#" onclick="zapri();"&gt;&lt;img src="close.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;
<table width="250" border="0" cellspacing="0" cellpadding="0">
<tr>
<th bgcolor="#99CC00">Ime:</th>
<th bgcolor="#99CC00">Priimek:</th>
</tr>
<tr>
<td>Franci</td>
<td>Pomagej</td>
</tr>
</table>
&lt;/div&gt;

Zgoraj je dodan še gumb za zapiranje okna, ki pa bo imel na koncu enako funkcijo, kot klik na zatemnjeno ozadje.

V inline css nastavimo display:none;, kar skrije obstoječo html kodo in jo ne rendra v brskalniku. Ostal css izgleda nekako tako:

#okno {
background-color: #333333;
border: 1px solid #FFFFFF;
height: 300px;
width: 300px;
padding: 5px;
}
#bg {
background-color: #000000;
margin: 0px;
height: 100%;
width: 100%;
position: absolute;
left: 0px;
top: 0px;
}

Pozicija odprtega okna je tako odvisna od vas, v spodnjem primeru je primer kode, ki pozicionira okno na sredino brskalnika, to stori tako, da s pomočjo javascripta prebere višino in širino brskalnika, posamezno vrednost deli z dva in odšteje vrednosti, tako dobimo absolutne odmike od zgornjega in levega robu brskalnika in vrednosti nastavimo v css.

Samo odpiranje oken je še enostavnejše, saj se lahko uporabi toggle, show, fadeIn, itd. efekti, ki jih podpira jQuery. Sledeča javascript koda izgleda nekako takole:

function centriranje(){
$("#okno").css({
"position": "absolute",
"top": document.documentElement.clientHeight/2-$("#okno").height()/2,
"left": document.documentElement.clientWidth/2-$("#okno").width()/2
});
$("#bg").css({
"opacity": "0.7"
});

}
function prikazi(){
centriranje();
$('#bg').fadeIn(function () {
$('#okno').fadeIn("slow");
});

$('#bg').click(function () {
zapri();
});

}
function zapri() {
$('#okno').fadeOut(function () {
$('#bg').fadeOut();
});
}

V zgornjem primeru, se odpiranje izvaja tako, da se najprej odpre ozadje, ko je to odprto, se izvede odpiranje okna, pri zapiranju, pa je postopek obraten.

Primer: xopen

Rešitev za IE6:

$("#bg").css({
"opacity": "0.7",
"width": document.documentElement.clientWidth,
"height": document.documentElement.clientHeight
});

Pri nastavljanju opacity dodate še točno višino in širino overlaya. Opacity pa lahko nastavite tudi kar v CSS datoteki.

Tagi: , , , ,

3 x komentiran Prijazni popup

Luka
23.10.2008

Zanimivo.

Miha
29.10.2008

Zanimivo, a je problem v IE6. No vsaj pri meni, ko imam MultipleIEs.

Carli
29.10.2008

Ja seveda je problem, pri transparenci gumba za zapiranje, ker je png, pač narejen na hitro za prikaz in pa pri odpiranju overlaya je problem pri IE6, ki mu preglavico delajo procenti.

Sem dodal tudi rešitev za IE6.

Komentiraj ...


 

October 2008
M T W T F S S
« Sep   Nov »
 12345
6789101112
13141516171819
20212223242526
2728293031  

Anketa

Pišete svoj blog?

View Results

Loading ... Loading ...

Koornk Widget

-Ideja Modro zlato je ugledala luč sveta ... modro-zl..
-Dodan en temp page, da se malo poveča ranking domene ... ponudi.n.. ...
-Na vidiku še en blog feeder oz. directory.
-Prokleti antivirusni programi! I hate them!
-Čekiram, kaj je za popravit! :D zpm-idri.. definitivno!
Več na koornk.com

Tagi