5105 Stimmen

Wie man ein Element horizontal zentriert

Wie kann ich eine horizontale Zentrierung einer <div> in einem anderen <div> CSS verwenden?

<div id="outer">
  <div id="inner">Foo foo</div>
</div>

37 Stimmen

Von diesen großartigen Antworten möchte ich nur hervorheben, dass Sie "#inner" eine "Breite" geben müssen, oder es wird "100%" sein, und Sie können nicht sagen, ob es bereits zentriert ist.

1 Stimmen

display:flex; ist am einfachsten zu merken (Chrome gibt Ihnen Anleitungen in DevTools) und unterstützt die Zentrierung auf beiden Achsen.

4voto

antelove Punkte 2552

Zentrieren eines div in einem div

.outer {
  display: -webkit-flex;
  display: flex;

  //-webkit-justify-content: center;                            
  //justify-content: center;

  //align-items: center;

  width: 100%;
  height: 100px;
  background-color: lightgrey;
}

.inner {
  background-color: cornflowerblue;
  padding: 2rem;
  margin: auto;  

  //align-self: center;                     
}

<div class="outer">  
  <div class="inner">Foo foo</div>
</div>

4voto

jual ahmed Punkte 389

Ich habe Flexbox o CSS-Raster

  1. Flexbox

    #outer{
        display: flex;
        justify-content: center;
    }
  2. CSS-Raster

    #outer {
        display: inline-grid;
        grid-template-rows: 100px 100px 100px;
        grid-template-columns: 100px 100px 100px;
        grid-gap: 3px;
    }

Sie können das Problem auf verschiedene Weise lösen.

4voto

Руслан Punkte 627

Verwendung:

<div id="parent">
  <div class="child"></div>
</div>

Stil:

#parent {
   display: flex;
   justify-content: center;
}

Wenn Sie es horizontal zentrieren wollen, sollten Sie wie folgt schreiben:

#parent {
   display: flex;
   justify-content: center;
   align-items: center;
}

4voto

Temani Afif Punkte 208075

Hier ist eine weitere Möglichkeit, die horizontale Zentrierung mit Flexbox und ohne Angabe einer Breite für den inneren Container. Die Idee ist, Pseudo-Elemente zu verwenden, die den inneren Inhalt von rechts und links schieben.

使用方法 flex:1 auf Pseudo-Element wird sie füllen die verbleibenden Räume und nehmen die gleiche Größe und der innere Container wird zentriert werden.

.container {
  display: flex;
  border: 1px solid;
}

.container:before,
.container:after {
  content: "";
  flex: 1;
}

.inner {
  border: 1px solid red;
  padding: 5px;
}

<div class="container">
  <div class="inner">
    Foo content
  </div>
</div>

Wir können die gleiche Situation auch für die vertikale Ausrichtung betrachten, indem wir einfach die Richtung der Biegung in eine Spalte ändern:

.container {
  display: flex;
  flex-direction: column;
  border: 1px solid;
  min-height: 200px;
}

.container:before,
.container:after {
  content: "";
  flex: 1;
}

.inner {
  border: 1px solid red;
  padding: 5px;
}

<div class="container">
  <div class="inner">
    Foo content
  </div>
</div>

4voto

Alireza Punkte 92209

Die bekannteste Methode, die weit verbreitet ist und in viele Browser einschließlich der alten, ist mit margin wie unten:

#parent {
  width: 100%;
  background-color: #CCCCCC;
}

#child {
  width: 30%; /* We need the width */
  margin: 0 auto; /* This does the magic */
  color: #FFFFFF;
  background-color: #000000;
  padding: 10px;
  text-align: center;
}

<div id="parent">
  <div id="child">I'm the child and I'm horizontally centered! My daddy is a greyish div dude!</div>
</div>

Führen Sie den Code aus, um zu sehen, wie er funktioniert. Außerdem gibt es zwei wichtige Dinge, die Sie in Ihrem CSS nicht vergessen sollten, wenn Sie versuchen, auf diese Weise zu zentrieren: margin: 0 auto; . Das macht es zu dem gewünschten Zentrum. Und vergessen Sie nicht width des Kindes, sonst wird es nicht wie erwartet zentriert!

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