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.
  1. function galeria(kszulo,x,y){  
  2.       
  3.     var galeriakeret=document.createElement('DIV');                                         /* az egész galéria kerete*/  
  4.     galeriakeret.setAttribute('ID','galeriakeret');                                         /* ebbe van benne az összes */  
  5.     galeriakeret.setAttribute('style','position:absolute;left:'+x+'px;top:'+y+'px;');       /*egyéb ide tartozó cucc*/  
  6.       
  7.     var kepmegjelenito=document.createElement('DIV');                               /*az a keret ami megjeleníti a kisképeket nagyban */  
  8.     kepmegjelenito.setAttribute('ID','kepmegjelenito');  
  9.     kepmegjelenito.setAttribute('style','position:absolute;left:-6px;top:-7px;width:400px;height:350px;border:11px ridge #990000;text-align: center;vertical-align: middle;');  
  10.       
  11.     var nagykep=document.createElement('IMG');                              /*ez a nagykép kerül bele a nagykép keretébe*/  
  12.     nagykep.setAttribute('ID','nagykep');  
  13.     nagykep.setAttribute('valign','middle');  
  14.     nagykep.setAttribute('src','galeria/1.jpg');  
  15.     nagykep.setAttribute('style','max-width:400px;max-height:350px;');  
  16.       
  17.     var kepkivalaszto=document.createElement('DIV');                                /*a keret ahol lehet válogatni a kisképek között*/  
  18.     kepkivalaszto.setAttribute('ID','kepkivalaszto');  
  19.     kepkivalaszto.setAttribute('style','position:absolute;left:-190px;top:380px;width:600px;height:110px;border:4px ridge #990000;overflow:hidden;');  
  20.       
  21.     var kiskepek=document.createElement('DIV');                         /*ebbe a divben vannak benne ténylegesen a kisképek */  
  22.     kiskepek.setAttribute('ID','kiskepek');  
  23.     kiskepek.setAttribute('style','position:absolute;left:5px;top:5px;');  
  24.       
  25.     var x=0  
  26.     var keptav=10;  
  27.     for (var i=1; i<= 13;i++){                 
  28.         kiskepgenerator(kiskepek,'galeria/'+i+'.jpg',i,100,100,x);      /*itt tölti fel a progi a kisképes divet képekkel*/  
  29.         x=x+100+keptav;  
  30.     }  
  31.       
  32.     var balra=document.createElement('IMG');        /*balra mozgató animált gomb*/  
  33.     balra.setAttribute('ID','balra');  
  34.     balra.setAttribute('style','position:absolute;left:-170px;top:270px;width:60px;height:100px;');  
  35.     balra.setAttribute('onMouseDown','document.balra.src="bal1.jpg";balra()');  
  36.     balra.setAttribute('onMouseUp','document.balra.src="bal2.jpg";stop()');  
  37.       
  38.     var jobbra=document.createElement('IMG');       /*jobbra mozgató animált gomb*/  
  39.     jobbra.setAttribute('ID','jobbra');  
  40.     jobbra.setAttribute('style','position:absolute;left:-100px;top:270px;width:60px;height:100px;');  
  41.     jobbra.setAttribute('onMouseDown','document.jobbra.src="jobb1.jpg";jobbra()');  
  42.     jobbra.setAttribute('onMouseUp','document.jobbra.src="jobb2.jpg";stop()');  
  43.       
  44.     kepmegjelenito.appendChild(nagykep);        /*itt rakom össze, hogy ki kinek a szülője*/  
  45.     kepkivalaszto.appendChild(kiskepek);  
  46.     galeriakeret.appendChild(kepmegjelenito);  
  47.     galeriakeret.appendChild(kepkivalaszto);  
  48.     galeriakeret.appendChild(balra);  
  49.     galeriakeret.appendChild(jobbra);  
  50.     document.getElementById(kszulo).appendChild(galeriakeret);  
  51.       
  52. }  
  53.   
  54.   
  55. /* a segéd függvények:*/  
  56.   
  57. function kiskepgenerator(kiskepek,src,id,a,b,x){  
  58.     var kep=document.createElement('IMG');  
  59.     kep.setAttribute('ID',id);  
  60.     kep.setAttribute('src',src);  
  61.     kep.setAttribute('onClick','mutatnagyban('+id+')');  
  62.     kep.setAttribute('style','position:absolute;left:'+x+'px;top:0px;width:'+a+'px;height:'+b+'px');  
  63.     kiskepek.appendChild(kep);  
  64. }  
  65.   
  66. function mutatnagyban(id){  
  67.     document.nagykep.src='galeria/'+id+'.jpg';  
  68. }  
  69.   
  70. function jobbra(){  
  71. }  
  72.   
  73. function balra(){  
  74. }  
 
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…
  1. .holder{  
  2.     display: table;  
  3. }  
  4. .element{  
  5.     display:table-cell;  
  6.     vertical-align:middle;  
  7. }  
  1. <div class="holder">  
  2.     <div class="element"></div>  
  3. </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.