Autor | Zpráva | ||
---|---|---|---|
Jan Vonka Profil |
#1 · Zasláno: 25. 10. 2012, 11:56:14
Dobrý den,
mám problém s IEčkem a vlastně i s operou, používám jQuery 1.7.2 a mám udělaný script: function vcenter(objekt, mHeight, mWidth, odsazeni) { width = objekt.style.width? objekt.style.width.replace("px","")*1: objekt.offsetWidth; height = objekt.style.height? objekt.style.height.replace("px","")*1: objekt.offsetHeight; mPomner = mHeight/mWidth; pomner = height/width; if(mPomner > pomner) { zmenseni = mWidth/width; } else { zmenseni = mHeight/height; } objekt.style.width = (zmenseni*width)+"px"; objekt.style.height = (zmenseni*width)*pomner+"px"; if(odsazeni == 1) { objekt.style.top = (mHeight-(zmenseni*width)*pomner)/2+"px"; } } $(function(){ $('.vcenter').load(function(){ vcenter(this, '64', '91', 1); }); }); díky za každou radu ;) |
||
_es Profil |
Jan Vonka:
Časté potíže, zajímavosti a poučné debaty » Používejte var
$('.vcenter') je element obrázka? Udalosť onload môže vzniknúť skôr, než ju nastavíš. Spoľahlivý spôsob jej nastavenia je v HTML kóde obrázku zadať atribút onload .
Argumenty funkcie mHeight a mWidth majú snáď byť čísla - prečo funkcii posielaš textové reťazce?
|
||
Jan Vonka Profil |
ano .vcenter je <img>
onload, vím a teďka to mám jako doufám dočasné řešení, zaprvé se mi to moc nelíbí (ale to by bylo fuk) a za druhé pokud bych dělal nějakou změnu musel bych to všude přepisovat, takhle by to stačilo v tom jQuery... přepsal jsem to na function vcenter(objekt, mHeight, mWidth, odsazeni) { var width, height, mPomner, pomner, zmenseni width = objekt.style.width? objekt.style.width.replace("px","")*1: objekt.offsetWidth; height = objekt.style.height? objekt.style.height.replace("px","")*1: objekt.offsetHeight; mPomner = mHeight/mWidth; pomner = height/width; if(mPomner > pomner) { zmenseni = mWidth/width; } else { zmenseni = mHeight/height; } objekt.style.width = (zmenseni*width)+"px"; objekt.style.height = (zmenseni*width)*pomner+"px"; if(odsazeni == 1) { objekt.style.top = (mHeight-(zmenseni*width)*pomner)/2+"px"; } } $(function(){ $('.vcenter').load(function(){ vcenter(this, 64, 91, 1); }); }); a výsledek stále stejný... :/ |
||
_es Profil |
Jan Vonka:
„a výsledek stále stejný... :/“ A čo som ti radil: <img onload="vcenter(this, 64, 91, 1)" ... Aký je účel toho skriptu? |
||
Jan Vonka Profil |
#5 · Zasláno: 25. 10. 2012, 15:23:05
jo jo tak to funguje, ale jak říkám, je to na spoustě míst a kdyby se to upravovalo tak je to složité... ale asi to tak budu muset nechat...
|
||
_es Profil |
#6 · Zasláno: 25. 10. 2012, 15:24:59
Jan Vonka:
A čo ten skript robí? Mám podozrenie, že niečo, čo by sa cez JS robiť nemalo. |
||
Jan Vonka Profil |
#7 · Zasláno: 25. 10. 2012, 15:42:10
je to vertikální centrování obrázků, podle mého to je nejpřesnější a nejspolehlivější...
|
||
_es Profil |
#8 · Zasláno: 25. 10. 2012, 16:10:05
Jan Vonka:
No a prečo to „vertikálne centrovanie“ nespravíš normálne priamo v CSS? Prečo meníš rozmery obrázka? - Nedá sa spoľahnúť na to, akým spôsobom rôzne prehliadače obrázok zmenšia či zväčšia. |
||
Jan Vonka Profil |
#9 · Zasláno: 25. 10. 2012, 18:36:07
no ještě jsem nepřišel na způsob jak to udělat aby to bylo 100% funkční a zárověň přesný (například když použiji tabulku tak je to posunutý o cca 1px)
rozměry měním protože se tem obrázek musí přizpůsobit (do rámečku) |
||
Časová prodleva: 11 let
|
0