ugrás a tartalomhoz

Nem működik a vertical-align

Medve · 2009. Jún. 14. (V), 11.45
sziasztok,

Csináltam egy képgalériát, ahol van egy kis divslider ahol ke lehet válogatni a képet amit megszeretnénk nézni nagyban.A probléma a következő: a nagyképet amikor megjelenítem nem akarja függőlegesen középre igazítani azokat a képeket amelyek jóval kissebbek mint a keret.Gondoltam a vertical-align az jó megoldás lehet, de ugy néz ki nem. kérem lessétek meg nekem mi lehet vele a baj mert én beszorultam.

function galeria(kszulo,x,y){
	
	var galeriakeret=document.createElement('DIV');        									/* az egész galéria kerete*/
	galeriakeret.setAttribute('ID','galeriakeret');											/* ebbe van benne az összes */
	galeriakeret.setAttribute('style','position:absolute;left:'+x+'px;top:'+y+'px;');		/*egyéb ide tartozó cucc*/
	
	var kepmegjelenito=document.createElement('DIV');								/*az a keret ami megjeleníti a kisképeket nagyban */
	kepmegjelenito.setAttribute('ID','kepmegjelenito');
	kepmegjelenito.setAttribute('style','position:absolute;left:-6px;top:-7px;width:400px;height:350px;border:11px ridge #990000;text-align: center;vertical-align: middle;');
	
	var nagykep=document.createElement('IMG');								/*ez a nagykép kerül bele a nagykép keretébe*/
	nagykep.setAttribute('ID','nagykep');
	nagykep.setAttribute('valign','middle');
	nagykep.setAttribute('src','galeria/1.jpg');
	nagykep.setAttribute('style','max-width:400px;max-height:350px;');
	
	var kepkivalaszto=document.createElement('DIV');								/*a keret ahol lehet válogatni a kisképek között*/
	kepkivalaszto.setAttribute('ID','kepkivalaszto');
	kepkivalaszto.setAttribute('style','position:absolute;left:-190px;top:380px;width:600px;height:110px;border:4px ridge #990000;overflow:hidden;');
	
	var kiskepek=document.createElement('DIV');							/*ebbe a divben vannak benne ténylegesen a kisképek */
	kiskepek.setAttribute('ID','kiskepek');
	kiskepek.setAttribute('style','position:absolute;left:5px;top:5px;');
	
	var x=0
	var keptav=10;
	for (var i=1; i<= 13;i++){				
		kiskepgenerator(kiskepek,'galeria/'+i+'.jpg',i,100,100,x);		/*itt tölti fel a progi a kisképes divet képekkel*/
		x=x+100+keptav;
	}
	
	var balra=document.createElement('IMG');		/*balra mozgató animált gomb*/
	balra.setAttribute('ID','balra');
	balra.setAttribute('style','position:absolute;left:-170px;top:270px;width:60px;height:100px;');
	balra.setAttribute('onMouseDown','document.balra.src="bal1.jpg";balra()');
	balra.setAttribute('onMouseUp','document.balra.src="bal2.jpg";stop()');
	
	var jobbra=document.createElement('IMG');		/*jobbra mozgató animált gomb*/
	jobbra.setAttribute('ID','jobbra');
	jobbra.setAttribute('style','position:absolute;left:-100px;top:270px;width:60px;height:100px;');
	jobbra.setAttribute('onMouseDown','document.jobbra.src="jobb1.jpg";jobbra()');
	jobbra.setAttribute('onMouseUp','document.jobbra.src="jobb2.jpg";stop()');
	
	kepmegjelenito.appendChild(nagykep);		/*itt rakom össze, hogy ki kinek a szülője*/
	kepkivalaszto.appendChild(kiskepek);
	galeriakeret.appendChild(kepmegjelenito);
	galeriakeret.appendChild(kepkivalaszto);
	galeriakeret.appendChild(balra);
	galeriakeret.appendChild(jobbra);
	document.getElementById(kszulo).appendChild(galeriakeret);
	
}


/* a segéd függvények:*/

function kiskepgenerator(kiskepek,src,id,a,b,x){
	var kep=document.createElement('IMG');
	kep.setAttribute('ID',id);
	kep.setAttribute('src',src);
	kep.setAttribute('onClick','mutatnagyban('+id+')');
	kep.setAttribute('style','position:absolute;left:'+x+'px;top:0px;width:'+a+'px;height:'+b+'px');
	kiskepek.appendChild(kep);
}

function mutatnagyban(id){
	document.nagykep.src='galeria/'+id+'.jpg';
}

function jobbra(){
}

function balra(){
}

 
1

A kódodat fölösleges volt

Fraki · 2009. Jún. 14. (V), 13.15
A kódodat fölösleges volt idehányni, és a vertical-align nem azt csinálja, amit elvárnál tőle!!!!!!!! Van a weblaboron erről téma, rákerestél már?
3

google

aztek · 2009. Jún. 14. (V), 16.00
Ha vertikálisan akarsz valamit középre igazítani, akkor csinálj egy divet table megjelenéssel, abba rakj egy másik elemet, ami table-cell megjelenésű… és akkor már használhatod a vertical-align tulajdonságot…

Egyébként tényleg volt szó erről itt és a google is megadta volna a választ…
.holder{
	display: table;
}
.element{
	display:table-cell;
	vertical-align:middle;
}
<div class="holder">
	<div class="element"></div>
</div>
4

ie

gex · 2009. Jún. 14. (V), 16.08
igen ez kísérletnek nagyon jó, de éles weboldalon nem tudod használni az ie-k miatt.
5

ie8 már támogatja

Ustak · 2009. Jún. 14. (V), 21.22
bár én kicsit húzom a számat miatta, ugyanannyi div kell mintha egy táblázatot csinálnék belőle, annyi csak hogy szemantikailag helyesebb... de lehet hogy rosszul látom :-)
(Picit bugolt is még -vagy csak én nem értettem hozzá / pl hiába adtam a cellának relative positioningot, a belerakott absolute positioned elem nem maradt benne, megállt a az első nem table elemnél melynél position relative volt.)
Üdv:
Gábor
6

Ha már kifújt minden szóba

Török Gábor · 2009. Jún. 14. (V), 21.55
Ha már kifújt minden szóba jöhető szemantikus elem, nincs azzal semmi baj, ha div-eket használsz. Ezért lesznek a HTML5-ben header, nav és hasonló új elemek, hogy ne csak az általános célú konténer elemeket lehessen használni. Meg aztán a display: table tényleg csak a táblázatos iskolát hozza vissza új köntösben, az igazi megoldás majd a CSS grid modul széles körű elterjedése lesz.