18. november 2010 - 17:23 Der er 7 kommentarer og
1 løsning

Vertical alignment i en raekke i en tabel.

Jeg soeger hjaelp til at faa indholdet af cellerne i en tabel-raekke til at flugte vertikalt, midt med midt.  Her er et screenshot af raekken:  http://poststamp.dk/pictures/Row1.gif .

Indholdet under AREA og COUNTRY bestaar af en image, den blaa pil, og et gult span med tekst.  Indholdet under DISTRICT og STOCK-No er en enkel image (selv om de ser ud til at bestaa af to elementer,) og indholdet under BASKET er en image.

Jeg vil gerne have billedet under BASKET ned saa midten flugter med midten af de andre imager.  Ivrige observatoerer vil se at midten af de gule tekster netop ikke flugter med midten af pilene.  Det vil jeg ogsaa gerne have bragt i orden.

I denne screenshot http://poststamp.dk/pictures/Row2.gif har jeg lavet raekken bredere for at vise at imagen under BASKET i princippet sidder midt i raekken men lidt for hoejt.  Det er som om systemet tilfoejer noget padding under billedet.  Jeg lavede billedet ved med Screenhunter at skaere det ud af noget andet og jeg tilfoejede ikke nogen plads eller padding under.

I koden som jeg viser nedenunder har jeg givet de blaa pile under AREA og COUNTRY css egenskaben text-align:bottom (class='bottom'.)  Hvis jeg undlader det saa flyttes de gule tekster en anelse ned hvorimod de blaa pile bliver siddende.  Det forstaar jeg intet af, men i dette screenshot har jeg fjernet class='bottom' fra pilen under COUNTRY: http://poststamp.dk/pictures/Row3.gif .  Ellers har jeg ikke brugt css egenskaber til vertical alignment (men jeg har afproevet alt med vertical-align top/midt/bottom og text-top/text-midt/text/bottom.)

Jeg vil ogsaa gerne goere raekken smallere, men den tvinges til den nyvaerende bredde af billedet under BASKET.

Saa tre spoergsmaal:  (1)  Hvordan faar jeg billedet under BASKET til at flugte med resten?  (2)  Hvordan faar jeg de gule tekster til at flugte med de blaa pile (midt flugte med midt?)  (3) Hvordan faar jeg raekken gjort smallere?


Her er koden for raekken:


//Second row
echo "<tr>";
echo "<td class='center'><img class='bottom' src='iconer/arrow.gif' /><span class='yellow'>$area</span></td>";
echo "<td class='center'><img class='bottom' src='iconer/arrow.gif' /><span class='yellow'>$country</span></td>";

echo "<td class='center'>";
echo "<img id='choseDistrict' src='iconer/chose.gif' onMouseOver = 'setVisibleDistrict()' />";
echo "</td>";
echo "<td>&nbsp</td><td>&nbsp;</td><td>&nbsp;</td>";
echo "<td class='center'>";
echo "<img id='chose' src='iconer/chose.gif' onMouseOver = 'setVisibleStock()' />";
echo "</td>";
echo "<td>&nbsp;</td>";
echo "<td class='center'>";
if($_SESSION['basketFull'] == "TRUE")
{
  echo "<form action='districtViewBasketAlt.php' method='POST'>";
  echo "<input id='openBasket' type='image' height='40' src='iconer/fullBasket.gif' alt='View basket' />";
  echo "</form>";
}
echo "</td>";
echo "<tr/>";
Avatar billede webweaver Praktikant
18. november 2010 - 17:38 #1
Det ville være nemmere, hvis du henviste til din CSS kode også. Der er måske ikke andet text-align?

Kan du ikke bruge margin/padding enten på cellerne eller selve elementet, til at tvinge dine elementer op eller ned, så det passer?

Hvis din tekst med gul baggrund er for højt oppe nu (og er det når du har text-align: bottom) på, hvorfor fjerner du det så ikke, så det kommer lidt ned? Det er måske stadig ikke nok?
18. november 2010 - 18:45 #2
1.  webweaver, css-filen sidder her:  http://poststamp.dk/style.css .  Jeg bragte den ikke i foerste omgang fordi der ikke sidder andet relevant i end text-align:bottom.  Men kik engang, maaske har jeg overset noget.

2.  text-align:bottom sidder ikke paa de gule tekster men paa de blaa pile.  Hvis jeg fjerner text-align:bottom saa bliver de blaa pile siddende men de gule tekster flytter sig ned.  Det lyder for mig som den omvendte verden, men for at demonstrere det fjernede jeg i det tredje link text-align:bottom fra den blaa pil under COUNTRY.

3.  Paddings hist og pist maa da vaere en noedloesning.  Det jeg haaber paa er at medlemmer med mere indsigt i CSS/HTML end jeg (og det er ikke svaert) kan hjaelpe mig til at forstaa hvorfor mine elementer opfoere sig vertikalt som de goer.  Saa kan korrigere det paa den 'videnskabelige' maade.  Isaer vil jeg gerne forstaa det hvide omraade systemet tilsyneladende tilfoejer under indkoebsvogn-billedet.  Foroevrigt, hvis jeg proever at aligne ved at tilfoeje padding ovenover indkoebsvognen saa bliver raekken da endnu bredere.

Saa kaere med-medlemmer, hjaelp mig at forstaa hvorfor systemet placerer mine elementer som det goer.
Avatar billede webweaver Praktikant
18. november 2010 - 20:25 #3
Tak for filen til CSS. Det er lidt nemmere at se hvordan det er bygget op :-)

Jeg kan se at du har vertical-align på img og span tagget.
Jeg ville bruge det på center klassen, for at få det på <td> og være gældende for begge 2. Men det er ikke så vigtigt. Image er centreret i boksen, og teksten mangler lidt. Jeg vil sætte margin: 0px; på din span class og din img class. Det kan gøre en forskel ofte, når det gælder om sådan noget.

At det vises på span, at du er text-align på dine images er lidt mystisk. Det må være fordi den "skubber" til dem, for normalt er den verden ikke omvendt, og der bruges text-align på de ting som den skal aligne. Den virker ikke på img fx. (hvilket du også kan se i og med at de ikke flytter sig)

Med hensyn til dit basket image, kan jeg godt se at det ikke er centreret. Det lader igen til at være margin/padding fejl, da der naturligvis ikke bare kommer ekstra luft på et billede. Margin: opx; på billedet og også på <form>. Den kan også sagtens have en margin, hvis den ikke er sat til 0px.

Jeg vil ikke sige at padding og margin er en nødløsning. Det er en fuld lovlig del af CSS og en stor del af CSS. Og afhængig af hvordan man vælger at positionere sine elementer, kan det være nødvendigt at benytte sig af nogle gange. I dit tilfælde, hvor du skal have det hele centraliseret, burde det dog ikke være nødvendigt, hvis du får sat margin til 0px alle steder. Hvis du bruger padding, så bør det ikke gøre din celle bredere. Jo hvis du bruger padding: 10px; da det kommer på alle sider så, men padding-top: 10px;, så nej.

I øvrigt kan det være en hjælpende hånd til en selv nogle gange at benytte sig af gode gamle valign="center" i HTML på ens table og ens tr, for at se hvad der sker, istedet for at starte med CSS'en. Imens man debugger. At sætte borders på sine elementer, kan også være smart, så man kan se hvor der ligger luft henne, og så videre.
18. november 2010 - 20:47 #4
webweaver, tak for dit grundige svar (som jeg kan se er baseret paa grundig og tidsroevende studie af hvad jeg har sendt.)  Det giver jeg mig til at studere og afproeve.  Det vil nok tage lidt tid (og i morgen er jeg haengt op,) men jeg kommer tilbage.
Avatar billede webweaver Praktikant
18. november 2010 - 21:50 #5
Det var så lidt :-) Håber at det hjælper på tingene.
20. november 2010 - 18:12 #6
webweaver, nu har jeg har nu kikket paa det igen.

Foerst tre kommentarer:  (1)  Med raekkens bredde mente jeg faktisk hoejden.  Sorry.  (2)  Padding og margin: jeg haaber paa hjaelp til i foerste omgang at forsta efter hvilke regler browserne placerer elementerne og arbejde med disse regler og derefter, hvis noedvendigt, at finjustere med padding og lignende. (3) Jeg er altid gaaet ud fra at margin og padding var 0 hvis ikke andet var sagt.  Jeg har nu opdaget, jaevnfoer nedenstaaende, at du har ret i at det ikke behoever at vaere tilfaeldet.

webweaver og andre, jeg besluttede foerst at arbejde med indkoebskurv-imagen.  Jeg satte margin og padding til 0 i centerklassen som du foreslog jeg skulle proeve, men det havde ingen virkning.  Saa kom jeg i tanker om at imagen er en <input type='image'/> der sidder i en form.  Ved at give formen og <input> margin=0 og padding=0 fik jeg imagen ned paa raekkens bundlinie, men der er stadig luft ovenover.  Har du (eller andre) forslag til hvad luften ovenover kan skyldes?  Det har ingen indflydelse at saette vertical-align:middle; aabenbart betragtes det hvide omraade ovenover som en del af imaget og raekkens hoejde er bestemt deraf.

Her er et link til en demonstration:  http://poststamp.dk/pictures/Eksempel.gif .  Oeverst viser jeg resultatet af den oprindelige kode.  Saa satte jeg et ekstra set raekker paa med den forskel at jeg fjernede form og <input> og kun bragte imagen.  Og saa skrumplede den ind!  Hurra.  Dernaest satte jeg margin=0 og padding=0 for formen og for <input> og det fjernede de hvide under kurven men ikke ovenover.  Pudsigt nok var der stadig lidt hvidt under imagen hvor det var vaek for formen.  i td'en var der af 'historiske' grunde en &nbsp;. Da jeg fjernede den kom kurven ned.  (Forstaa det hvem der kan.)  Jeg kom saa i tanker om at cellen med billedet med rowspan=2 er et th element.  I det nederste eksempel bestaar den midterste raekke kun af td'er men kurven sidder i en form.  Det ar fjerne th'en gjorde ingen forskel.

For de der har mod paa det, her er koden til siden.  Jeg har markeret den relevante raekke med //HER SIDDER RAEKKEN.  http://poststamp.dk/Kode.txt
22. november 2010 - 20:15 #7
En taabe kan aabenbart spoerge om mere end ti aviser kan svare paa.  Men skaebnen har vaeret mig naadig som jeg skal forklare.  En sammenfatning:  Det problem jeg fokuserede paa i #6 (efter at have rejst en stoerre vifte af problemer i det oprindelige spoergsmaal) var at ikonen for indkoebskurven, naar den sidder i en form som input type image, faar et ekstra hvidt omraade foejet til ovenover og nedenunder.  Naar jeg for formen satte margin=0 padding=0 saa forsvandt det hvide omraade under men ikke ovenover ikonen.  Idag er det hvide omraade over og under vaek naar jeg saetter margin og padding til 0 for formen.  Jeg er ikke klar over at jeg har aendret noget.  Den eneste logiske forklaring jeg kan taenke paa er at "der liebe IT gott" har faaet medlidenhed med mig.

Webweaver, du gav hjaelp til selvhjaelp - jeg maatte selv arbejde mig frem til loesningen (saa sidder det ogsaa bedre fast,) men dine indlaeg hjalp til at saette tankeprocessen paa rette spor.  Opretter du et svar saa jeg kan lukke og kvittere?  Hvis jeg faar yderligere problemer specificerer jeg dem i et nyt spoergsmaal.
Avatar billede webweaver Praktikant
22. november 2010 - 20:42 #8
Hej Christian_Belgien.

Det er godt at du "fandt" en løsning på det. hehe
Umiddelbart forstår jeg ikke meget af at du fik "luften" væk igen, ved at fjerne margin og padding. Det kunne tyde på en omrokering af noget kode et sted. Men var næsten godt klar over at der ville være margin omkring din form, da jeg tit har oplevet det på andre projekter. Deraf jeg også nævnte det.

Jeg smider et svar, og ja.. Du kan jo altid bare poste en nyt, hvis skidtet begynder at drille igen :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester