[html/css] img in div verticaal centreren

Pagina: 1
Acties:
  • 158 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Ik kom er maar niet achter hoe ik het voor elkaar kan krijgen om een img verticaal te centreren in een div. Ik heb 't in de search niet kunnen vinden, dus ik hoop niet dubbel te posten.

Een van mijn pogingen tot dusverre:

html:
code:
1
2
3
<div class="div_avatar">
  [img]"plaatje.gif"[/img]
</div>

css:
code:
1
2
3
4
5
6
7
8
9
10
.div_avatar { 
    background-color: #FFFFFF;
    width: 65px;
    height: 65px;
    border-style: solid;
    border-color: #D1B407;
    border-width: 1px;
    text-align: center;
    vertical-align: middle;
}


Iemand die me een zetje in de goede richting kan geven?

Acties:
  • 0 Henk 'm!

  • SIMPY.be
  • Registratie: April 2003
  • Laatst online: 29-07 09:58
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
.div_avatar { 
    background-color: #FFFFFF;
    width: 65px;
    height: 65px;
    border-style: solid;
    border-color: #D1B407;
    border-width: 1px;
    left: 50%;
    top: 50%;
    margin-left: -32px;
    margin-top: -32px;
    position: absolute;
}

[ Voor 5% gewijzigd door SIMPY.be op 11-01-2006 16:44 . Reden: position: absolute; vergeten ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan zweeft hij ineens een eind weg.

Als jouw oplossing de juiste zou moeten zijn, zou het probleem misschien kunnen zijn dat ik de html aangeleverd heb gekregen met een table met td rowspans?

quick edit: hoewel, hij zweeft inderdaad ergens weg, maar daarnaast is de img nog steeds niet verticaal gecentreerd in mijn div.

[ Voor 26% gewijzigd door Verwijderd op 11-01-2006 16:42 ]


Acties:
  • 0 Henk 'm!

  • SIMPY.be
  • Registratie: April 2003
  • Laatst online: 29-07 09:58
ohja, ik vergeet het altijd

in uw css toevoegen
position: absolute;
:) _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
in uw css toevoegen
position: absolute;
Dan zweeft hij ergens anders heen ;)

Acties:
  • 0 Henk 'm!

  • SIMPY.be
  • Registratie: April 2003
  • Laatst online: 29-07 09:58
mhh, dan ligt het aan uw tabellen...
http://users.simpy.be/got.html is wel goed
mag ik je erop wijzen dat tabellen niet bedoelt zijn voor layout!

Acties:
  • 0 Henk 'm!

  • BitBit3r
  • Registratie: November 1999
  • Laatst online: 11-03 08:13

BitBit3r

Lid

wat je kan doen is een doorzichtige pixel de totale hoogte van de div maken, die pixel de vertical-align: middle; style meegeven.

Tekst, en plaatjes hiernaast zullen dan in het midden staan. Niet heel erg netjes, maar het werkt wel...

Het zou zoveel chiller zijn als een div net zoals <td valign=middle> zou werken.... helaas

Wat er ook gebeuren moogh...


Acties:
  • 0 Henk 'm!

Verwijderd

je kan de image als background zetten. Dan kan je hem wel verticaal in het midden zetten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SIMPY.be schreef op woensdag 11 januari 2006 @ 16:49:
mhh, dan ligt het aan uw tabellen...
http://users.simpy.be/got.html is wel goed
mag ik je erop wijzen dat tabellen niet bedoelt zijn voor layout!
Het zal aan mij liggen, maar jouw voorbeeld aligned top left. :?
BitBit3r schreef op woensdag 11 januari 2006 @ 16:50:
wat je kan doen is een doorzichtige pixel de totale hoogte van de div maken, die pixel de vertical-align: middle; style meegeven.

Tekst, en plaatjes hiernaast zullen dan in het midden staan. Niet heel erg netjes, maar het werkt wel...
helaas[/small]
Inderdaad niet echt super. Moet toch beter kunnen. ;)
Verwijderd schreef op woensdag 11 januari 2006 @ 16:52:
je kan de image als background zetten. Dan kan je hem wel verticaal in het midden zetten.
Heb ik ook al overwogen, zou ik kunnen doen inderdaad. Maar het liefst probeer ik het eerst zo voor elkaar te krijgen. B)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 11 januari 2006 @ 16:57:
[...]
Heb ik ook al overwogen, zou ik kunnen doen inderdaad. Maar het liefst probeer ik het eerst zo voor elkaar te krijgen. B)
Dan zou ik het met line-height doen.
hoewel, dat werkt alleen met tekst...

[ Voor 8% gewijzigd door Verwijderd op 11-01-2006 17:36 ]


Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Werkt uiteraard met alle inline elementen en het zou op zich dus moeten kunnen met line-height en / of font-size icm vertical-align.. weet alleen niet exact hoe ze in verhouding staan en of ze cross-browser goed overeenkomen. Ik ga dat eens proberen uit te zoeken.

In een fatsoenlijke browser (zoals FF) werkt volgens mij het gelijk zetten van de line-height aan de hoogte van de div icm "vertical-align: middle" toegepast op de img al.

edit: heb ff gezocht en aangekloot, maar ik krijg het in IE niet op een nette en eenduidige manier voor elkaar.

[ Voor 17% gewijzigd door Sappie op 11-01-2006 19:21 ]

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Vind het toch vreemd dat zoiets relatief simpels zo lastig moet zijn. Het is nu niet bepaald een abnormaal idee dacht ik. ;)

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
SIMPY.be schreef op woensdag 11 januari 2006 @ 16:43:
ohja, ik vergeet het altijd

in uw css toevoegen
position: absolute;
:) _/-\o_
En de parent een position: relative!!

Als je die niet toepast wordt het object vanuit de linkerbovenhoek van het scherm gepositioneerd. Met position: relative in de parent wordt hij vanuit de linkerbovenhoek van de parent geplaatst.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Verwijderd schreef op woensdag 11 januari 2006 @ 16:57:
[...]

Het zal aan mij liggen, maar jouw voorbeeld aligned top left. :?
In welke browser ?
In FF 1.5 staat ie horizontaal en verticaal in het midden

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
frickY schreef op donderdag 12 januari 2006 @ 10:06:
[...]

En de parent een position: relative!!

Als je die niet toepast wordt het object vanuit de linkerbovenhoek van het scherm gepositioneerd. Met position: relative in de parent wordt hij vanuit de linkerbovenhoek van de parent geplaatst.
Eens even proberen..
TheRookie schreef op donderdag 12 januari 2006 @ 10:39:
[...]

In welke browser ?
In FF 1.5 staat ie horizontaal en verticaal in het midden
Euhm, echt niet.. :) Ik krijg het idee dat jullie allebei op de positie van de div letten. Maar het gaat om de positie van de image IN de div. En die staat echt topleft (zowel in FF als in IE).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb nu dit, hij zwerft niet meer door het scherm, maar hij staat nog steeds niet verticaal gecentreerd. :/


code:
1
2
3
4
5
<div class="div_avatar">
  <div class="div_avatar_image">
    [img]"plaatje.gif"[/img]
  </div>
</div>


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.div_avatar { 
    background-color: #FFFFFF;
    width: 65px;
    height: 65px;
    border-style: solid;
    border-color: #D1B407;
    border-width: 1px;
    text-align: center;
    vertical-align: middle;
    position: relative;
}

.div_avatar_image { 
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -32px;
    margin-top: -32px;
}


edit:

[ Voor 28% gewijzigd door Verwijderd op 12-01-2006 12:26 ]


Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Geef je image ff display block; dan zal ie wel verticaal gecentreerd zijn wss. zo dus:
code:
1
2
3
<div class="div_avatar">
    [img]"plaatje.gif"[/img]
</div>

icm:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.div_avatar { 
    background-color: #FFFFFF;
    width: 65px;
    height: 65px;
    border: 1px solid #D1B407;
    position: relative;
}

.div_avatar img { 
    position: absolute;
    display: block;
    left: 50%;
    top: 50%;
    margin: -32px 0 0 -32px;
}

[ Voor 33% gewijzigd door Sappie op 12-01-2006 12:40 ]

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nope helaas.. Trouwens, hij centreert ook niet horizontaal (ook al niet voor sappie's suggestie)... Die left en top werken gewoon niet zo lijkt het. Kan het met bepaalde header informatie te maken hebben misschien?

Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Werkt idd ook niet zag ik net (had het niet getest). Hier dan iets wat hier in Firefox 1.0.6 en IE (en in Konqueror) hetzelfde resultaat bewerkstelligt (wel hackerig en ben er niet kapot van):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
    <title>test</title>
    <style type="text/css">
        .div_avatar { 
            width: 65px;
            height: 65px;
            overflow: hidden;
            border: 1px solid #D1B407;
            line-height: 62px; /* optimale waarde voor FF voor verticale centrering */
            text-align: center;
        }
        
        .div_avatar img { 
            vertical-align: middle;
        }
    </style>
    <!--[if lt IE 7]>
          <style type="text/css">
              .div_avatar { position: relative; }
              
              .div_avatar img { 
                display: block;
                position: absolute;
                top: expression((65 - this.clientHeight) / 2 + "px"); 
                left: expression((65 - this.clientWidth) / 2 + "px");
            }
          </style>
    <![endif]-->
</head>
<body>
    <div class="div_avatar">
        [img]"bef.gif"[/img]
    </div>  
</body>
</html>

Als de grootte van het plaatje en de grootte van je avatar div altijd hetzelfde zijn is dit uiteraard een stuk eenvoudig op te lossen.

[ Voor 14% gewijzigd door Sappie op 12-01-2006 13:23 ]

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat werkt in ieder geval in IE! Helaas in FF hier niet.
Sappie schreef op donderdag 12 januari 2006 @ 13:22:
Werkt idd ook niet zag ik net (had het niet getest). Hier dan iets wat hier in Firefox 1.0.6 en IE (en in Konqueror) hetzelfde resultaat bewerkstelligt (wel hackerig en ben er niet kapot van):
Hm, wat zijn de mogelijke nadelen van zoiets dan? Ben niet zo thuis in dergelijke css hacks.
code:
1
<!--[if lt IE 7]>
Heb nooit met zulke If statements in css gewerkt, dus misschien een domme vraag, maar werkt dat alleen binnen de style tags IN de html of ook in een extern stylesheet? Vraag het omdat er toch nog iets niet helemaal goed gaat in FF.
Als de grootte van het plaatje en de grootte van je avatar div altijd hetzelfde zijn is dit uiteraard een stuk eenvoudig op te lossen.
De div is altijd even groot, maar de image kan varieëren (wel maximaal 60x60).

Tot zover in ieder geval bedankt! :)

Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Verwijderd schreef op donderdag 12 januari 2006 @ 14:03:
[...]
Hm, wat zijn de mogelijke nadelen van zoiets dan? Ben niet zo thuis in dergelijke css hacks.
Ik ben er niet kapot van, aangezien de line-height property icm font-size en vertical-align niet uniform ondersteund / gerendered worden door alle browsers. Hij lijnt het namelijk in Konqueror weer net ff anders uit dan in Firefox.
Heb nooit met zulke If statements in css gewerkt, dus misschien een domme vraag, maar werkt dat alleen binnen de style tags IN de html of ook in een extern stylesheet? Vraag het omdat er toch nog iets niet helemaal goed gaat in FF.
Zulke statements noemt met conditional comments en worden alleen ondersteund door IE.

Van welke versie van Firefox maak je gebruik? Want hier werkt het zoals gezegd in Firefox 1.0.6 (zit op school en kan ff 1.5 niet installeren) wel goed.

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Verwijderd schreef op donderdag 12 januari 2006 @ 12:10:
Euhm, echt niet.. :) Ik krijg het idee dat jullie allebei op de positie van de div letten. Maar het gaat om de positie van de image IN de div. En die staat echt topleft (zowel in FF als in IE).
Je hebt helemaal gelijk :D
Ik dacht dat 't plaatje (incl. lijn eromheen) zo hoorde, dus niet |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sappie schreef op donderdag 12 januari 2006 @ 14:27:

[...]

Zulke statements noemt met conditional comments en worden alleen ondersteund door IE.
Maar ze werken dus ook gewoon in een extern stylesheet?
Van welke versie van Firefox maak je gebruik? Want hier werkt het zoals gezegd in Firefox 1.0.6 (zit op school en kan ff 1.5 niet installeren) wel goed.
Ik gebruik 1.0.7, dus lijkt me dat 't daar dan niet aan zal liggen. :?

Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Je moet er met google maar eens op zoeken :) De conditional comments dienen natuurlijk in de html te staan. Wel kan je dan uiteraard voor IE een andere stylesheet opgeven.

en verder.. het voorbeeld werkt hier toch echt met firefox 1.0.6 (onder zowel linux als windows). Heb het zojuist nog een keer gecopy paste en getest in combinatie met een plaatje.

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik snap niet waarom het hier nu niet werkt. Heb je stylecode rechtstreeks gecopy/paste (nu IN de html head ;) ), maar in FF 1.0.7 doet hij het bij mij echt niet en in IE wel. :/

PS. Inderdaad, zou mezelf dan via google in conditional comments kunnen verdiepen. Vervelende gewoonte, dat gelijk doorvragen naar meer info. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Deze http://users.simpy.be/got.html werkt hier ook prima met IE 6 & FF1.0.7

Acties:
  • 0 Henk 'm!

  • Sappie
  • Registratie: September 2000
  • Laatst online: 14-08 16:46

Sappie

De Parasitaire Capaciteit!

Verwijderd schreef op donderdag 12 januari 2006 @ 16:51:
Ik snap niet waarom het hier nu niet werkt. Heb je stylecode rechtstreeks gecopy/paste (nu IN de html head ;) ), maar in FF 1.0.7 doet hij het bij mij echt niet en in IE wel. :/
Laat eens zien wat je nu exact hebt dan. Als je de code gewoon in een leeg bestand plakt werkt het dan ook niet?
edit:
hier thuis in FF 1.5 wordt het ook 'juist' gerendered

[ Voor 9% gewijzigd door Sappie op 12-01-2006 17:17 ]

Specs | Audioscrobbler


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hm my bad.. Het zit hem inderdaad ergens anders in. Wat je me hebt gegeven werkt ook hier gewoon als ik er een losse file van maak. Stom dat ik dat niet gelijk even geprobeerd heb (had ik met de andere tips wel gedaan namelijk). :)

Thanks Sappie! :> Ik kan weer even verder zoeken in ieder geval. :D

@ bakman, topic niet helemaal gelezen zeker? O-)

Acties:
  • 0 Henk 'm!

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 06-07 11:48

klokop

swiekie swoeng

Zo werkt het bij mij prima (FF 1.0.7):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style>
div {
  border: 1px solid green;
  display: table-cell;
  width: 300px;
  height: 300px;
  text-align: center;
  vertical-align: middle;
  }
</style>

<div>
  [img]"http://gathering.tweakers.net/usericons/30721/vierkant_bw_lijn.gif">
</div[/img]

"Passing silhouettes of strange illuminated mannequins"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
klokop schreef op vrijdag 13 januari 2006 @ 16:43:
Zo werkt het bij mij prima (FF 1.0.7):
Inderdaad, maar niet in IE. |:(

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op maandag 16 januari 2006 @ 10:44:
[...]

Inderdaad, maar niet in IE. |:(
Wat is het nut van deze opmerking (met de smilie erachter) :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BtM909 schreef op maandag 16 januari 2006 @ 11:25:
[...]

Wat is het nut van deze opmerking (met de smilie erachter) :?
Omdat het hele topic erover gaat dat het wel in FF goed gaat maar dan weer niet in IE of andersom, maar dat 't in ieder geval in beiden goed moet werken. Verder was er al een goede oplossing gepost. De poster heeft mijns inziens dus niet echt goed gelezen. De laatste post van die persoon brengt dus alleen een toekomstige viewer van dit topic in de war. Maargoed, laten we hier verder niet op in gaan. Sappie heeft in ieder geval een voor mij voorlopig werkende oplossing gegeven. :)
Pagina: 1