1678 Stimmen

Wie kann ich ein div-Element mit CSS in allen Browsern vertikal zentrieren?

Ich möchte eine div vertikal mit CSS. Ich möchte keine Tabellen oder JavaScript, sondern nur reines CSS. Ich habe einige Lösungen gefunden, aber bei allen fehlt die Unterstützung für Internet Explorer 6.

<body>
    <div>Div to be aligned vertically</div>
</body>

Wie kann ich eine div vertikal in allen gängigen Browsern, einschließlich Internet Explorer 6?

29 Stimmen

@MarcoDemaio Sind die Leute nicht ständig verpönt tables für Layouts hier?

17 Stimmen

@Chud37: es hängt davon ab, was Sie tun müssen, Tabellen für das Layout sind in der Regel nicht vielseitig und lange in Code eingeben, mit css können Sie leicht ändern ein 2 Spalten-Layout in einem 3/4/5 Sols Layout usw. Aber in diesem Fall ist anders, mit Dutzenden von css Tipps und Tricks für eine so einfache Aufgabe, die mit einer perfekten Cross-Browser-Tabelle erreicht werden könnte, ist es wie der Versuch, in Ihr Haus durch das Fenster statt mit der Tür zu betreten.

0 Stimmen

Für den Fall, dass sich die Leute nicht um die Unterstützung älterer Browser kümmern: davidwalsh.name/css-vertikal-zentriert

3voto

Netuddki Punkte 69

Ich habe es so gemacht (Breite, Höhe, margin-top und margin-left entsprechend ändern):

.wrapper {
    width: 960px;
    height: 590px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -295px;
    margin-left: -480px;
}

<div class="wrapper"> -- Content -- </div>

1 Stimmen

Das ist nur gut, wenn Sie die Breite/Höhe des DIVs kennen, das Sie zu zentrieren versuchen. Das ist nicht, was die Frage ist zu fragen

3voto

arket Punkte 3286

Nicht nur aus Gründen der Browserkompatibilität, sondern auch um das neue Grid und die nicht mehr ganz so neue Flexbox-Funktion zu erwähnen.

Raster

Von: Mozilla - Grid Dokumentation - Div vertikal ausrichten

Browser-Unterstützung: Grid Browser Unterstützung

CSS:

.wrapper {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 10px;
  grid-auto-rows: 200px;
  grid-template-areas: 
    ". a a ."
    ". a a .";
}
.item1 {
  grid-area: a;
  align-self: center;
  justify-self: center;
}

HTML:

<div class="wrapper">
 <div class="item1">Item 1</div>
</div>

Flexbox

Browser-Unterstützung: Flexbox-Browser-Unterstützung

CSS:

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: center;

3voto

Martin Wantke Punkte 3753

Ich denke, eine solide Lösung für alle Browser ohne Flexbox - "align-items: center;" ist eine Kombination aus display: table und vertical-align: middle;.

CSS

.vertically-center
{
    display: table;

    width: 100%;  /* Optional */
    height: 100%; /* Optional */
}

.vertically-center > div
{
    display: table-cell;
    vertical-align: middle;
}

HTML

<div class="vertically-center">
    <div>
        <div style="border: 1px solid black;">some text</div>
    </div>
</div>

Demo: https://jsfiddle.net/6m640rpp/

1voto

Melchia Punkte 19378

Es gibt einen Trick, den ich kürzlich herausgefunden habe: Sie müssen Folgendes verwenden top 50% und dann machen Sie eine translateY(-50%) .

.outer-div {
  position: relative;
  height: 150px;
  width: 150px;
  background-color: red;
}

.centered-div {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
  background-color: white;
}

<div class='outer-div'>
  <div class='centered-div'>
    Test text
  </div>
</div>

1voto

Ruwen Punkte 2475

Speziell für Parent-Divs mit relativer (unbekannter) Höhe kann die Zentrierung im Unbekannten Lösung funktioniert bei mir hervorragend. Es gibt einige wirklich schöne Code-Beispiele in dem Artikel.

Sie wurde in Chrome, Firefox, Opera und Internet Explorer getestet.

/* This parent can be any width and height */
.block {
  text-align: center;
}

/* The ghost, nudged to maintain perfect centering */
.block:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  margin-right: -0.25em; /* Adjusts for spacing */
}

/* The element to be centered, can
   also be of any width and height */ 
.centered {
  display: inline-block;
  vertical-align: middle;
  width: 300px;
}

<div style="width: 400px; height: 200px;">
   <div class="block" style="height: 90%; width: 100%">
  <div class="centered">
     <h1>Some text</h1>
     <p>Any other text..."</p>
  </div> 
   </div>
</div>

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