Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

CSS: Ein Bild vertikal und horizontal in einem DIV zentrieren

#Tutorials#CSS#HTML

Möchte man ein Bild innerhalb eines Div-Container komplett zentrieren, also horizontal und vertikal, so ist das nicht immer leicht. Mit diesem kleinen CSS Trick und einem Helper-Div kann man es aber komplett mit CSS lösen.

Hier eine Demo:

Markup/CSS
<style>
.frame {
    height: 27px;      /* equals max image height */
    width: 160px;
    border: 1px solid #ccc;
    white-space: nowrap;
    line-height: normal;
    text-align: center; margin: 1em 0;
}

.helper {
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

img {
    background: #3aa4af;
    vertical-align: middle;
    max-height: 25px;
    max-width: 160px;
}
</style>

<div class=frame>
    <span class="helper"></span>
  <img src="logo-trans.png" height=250 />
</div>
<div class=frame>
    <span class="helper"></span>
  <img src="logo-trans.png" height=25 />
</div>
<div class=frame>
    <span class="helper"></span>
  <img src="logo-trans.png" height=23 />
</div>
<div class=frame>
    <span class="helper"></span>
  <img src="logo-trans.png" height=21 />
</div>
<div class=frame>
    <span class="helper"></span>
  <img src="logo-trans.png" height=19 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=17 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=15 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=13 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=11 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=9 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=7 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=5 />
</div>
<div class=frame>
    <span class="helper"></span>
    <img src="logo-trans.png" height=3 />
</div>

Wie funktioniert das Ganze?

  1. Hat man zwei inline-block Elemente nebeneinander, kann man beide so anordnen, dass sie sich auf den anderen beziehen.Also kriegt man mit vertical-align: middle etwas in der Art:

    Two aligned blocks

  2. Hat nun das äußere Element eine fixe Höhe (in px, em order sonstiger Einheit), kann man die Höhe der inneren Elemente mit %. setzen

  3. Also fügt man inline-block mit height: 100% an das erste Helper Div in einem Div, das eine fixierte Höhe hat (.frame, siehe oben) wird das zweite inline-block Element (unser Bild) vertikal daneben zentriert.
  4. Da unser Helper keine Breite hat, ist das Bild dazu ebenfalls auch noch horizontal in der Mitte, mit einem text-align:center.

Kommentare

Es gibt noch keine Kommentare. Sei der Erste!

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.