372 Stimmen

Bild in der Mitte und in der Mitte des div ausrichten

Ich habe folgendes Div

<div id="over" style="position:absolute; width:100%; height:100%>
 <img src="img.png">
</div>

Wie kann man das Bild so ausrichten, dass es sich in der Mitte und im Zentrum des div befindet?

14 Stimmen

Duplikat gefragt vor 2 Minuten: CSS: Bild Mitte

1 Stimmen

Ähnliches Thema hier: stackoverflow.com/questions/18516317/

0 Stimmen

Erwägen Sie, eine Antwort als richtig auszuwählen.

470voto

Gurpreet Singh Punkte 4937
body {
  margin: 0;
}

#over img {
  margin-left: auto;
  margin-right: auto;
  display: block;
}

<div id="over" style="position:absolute; width:100%; height:100%">
  <img src="http://www.garcard.com/images/garcard_symbol.png">
</div>

JSFiddle

6 Stimmen

display: block; war mein Fallstrick. TnX

1 Stimmen

Wenn wir nicht display: block die Voreinstellung ist display: inline laut w3schools.com/cssref/pr_class_display.asp . Warum brauchen wir den Block? Ich arbeitete für mich, aber nicht sicher, warum Block wird die img zentrieren und inline wird nicht.

0 Stimmen

Weil inline sich nicht in der Zeile bewegt, ist es in der Tat in der Zeile. so margin auto ist unwirksam.

190voto

John K. Punkte 5340
<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>

2 Stimmen

Sehr kurze und einfache Lösung, die jedoch nur bei einer festen, nicht prozentualen Breite und Höhe zu funktionieren scheint. Es funktioniert mit Floats aber so +1 für das. - jsfiddle.net/2s2nY/2

1 Stimmen

Aber das macht nur die vertikale Ausrichtung, aber nicht die horizontale, richtig?

1 Stimmen

Es wird nicht funktionieren, wenn die Breite des Bildes größer als die Breite des Divs ist.

126voto

aerdman Punkte 1344

Dies kann auch mit Hilfe des Flexbox-Layouts geschehen:

STATISCHE GRÖSSE

.parent {
    display: flex;
    height: 300px; /* Or whatever */
    background-color: #000;
}

.child {
    width: 100px;  /* Or whatever */
    height: 100px; /* Or whatever */
    margin: auto;  /* Magic! */
}

<div class="parent">
    <img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>

DYNAMISCHE GRÖSSE

html, body {
  width: 100%;
  height: 100%;
  display: flex;
  background-color: #999;
}

* {
  margin: 0;
  padding: 0;
}

.parent {
  margin: auto;
  background-color: #000;
  display: flex;
  height: 80%;
  width: 80%;
}

.child {
  margin: auto;  /* Magic! */
  max-width: 100%;
  max-height: 100%;
}

<div class="parent">
  <img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>

Ich fand das Beispiel in diesem Artikel , in der die Verwendung des Layouts sehr gut erklärt wird.

0 Stimmen

Bei der statischen Größe müssen Breite und Höhe für das Kind nicht angegeben werden (zumindest in meiner Version von Firefox).

90voto

avrahamcool Punkte 13522

Mir scheint, dass Sie auch wollten, dass das Bild vertikal im Container zentriert wird. (Ich habe keine Antwort gesehen, die das vorsah)

Working Fiddle:

  1. Reine CSS-Lösung
  2. Keine Unterbrechung des Dokumentflusses (keine Floats oder absolute Positionierung)
  3. Browserübergreifende Kompatibilität (sogar IE6)
  4. Vollkommen ansprechbar.

HTML

<div id="over">
    <span class="Centerer"></span>
    <img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</div>

CSS

*
{
    padding: 0;
    margin: 0;
}
#over
{
    position:absolute;
    width:100%;
    height:100%;
    text-align: center; /*handles the horizontal centering*/
}
/*handles the vertical centering*/
.Centerer
{
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
.Centered
{
    display: inline-block;
    vertical-align: middle;
}

Anmerkung: Diese Lösung eignet sich für die Ausrichtung eines beliebigen Elements innerhalb eines Elements. für IE7, wenn Sie die .Centered Klasse auf Blockelementen, müssen Sie einen weiteren Trick anwenden, um die inline-block arbeiten. (das, weil IE6/IE7 nicht gut mit inline-block auf Block-Elemente spielen)

0 Stimmen

Anstatt zusätzliche span können Sie das Pseudo-Element :before : jsfiddle.net/xaliber/cj6zhtp0

0 Stimmen

@deathlock es ist bekannt. aber ich habe auf alte IE-Browser abgezielt (die keine Pseudoelemente unterstützen).

0 Stimmen

@avrahamcool Ich verstehe, das war mir nicht klar. Wie wäre es dann mit dem Umschlag der bedingten <!--[if lt IE 8]> um den span ?

67voto

Nitin Punkte 661
img.centered {
   display: block;
   margin: auto auto;
}

1 Stimmen

Dies ist sehr ähnlich zu 本答

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X