Heim  >  Artikel  >  Web-Frontend  >  Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

高洛峰
高洛峰Original
2017-02-25 14:47:151727Durchsuche

Gehe direkt zum Thema!

1. Elemente aus dem Dokumentenfluss zentrieren

Methode 1: margin:auto-Methode

CSS-Code:

p{
      width: 400px;
      height: 400px;
      position: relative;
      border: 1px solid #465468;
 }
 img{
      position: absolute;
      margin: auto;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
 }

HTML-Code:

<p>
   <img  src="mm.jpg" alt="Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS" >
</p>

Rendering:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Wenn ein Element absolut positioniert ist, wird es basierend auf dem ersten Vorgängerelement positioniert, das nicht statisch positioniert ist, also hier img wird entsprechend der äußeren Schicht p positioniert.

Methode 2: Negative-Marge-Methode

CSS-Code:

.container{
      width: 500px;
      height: 400px;
      border: 2px solid #379;
      position: relative;
 }
 .inner{
      width: 480px;
      height: 380px;
      background-color: #746;
      position: absolute;
      top: 50%;
      left: 50%;
      margin-top: -190px; /*height的一半*/
      margin-left: -240px; /*width的一半*/
 }

HTML-Code:

<p class="container">
    <p class="inner"></p>
</p>

Rendering:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Hier verwenden wir zuerst top:50 % und left:50 %, um den inneren Koordinatenursprung (obere linke Ecke) in die Mitte des Containers zu verschieben, und verwenden Sie dann den negativen Rand, um ihn um die Hälfte seiner Breite nach links und dann um die Hälfte nach oben zu versetzen seine Höhe, so dass der Mittelpunkt des Inneren mit dem Mittelpunkt des Behälters übereinstimmt.

2. Elemente zentrieren, die nicht außerhalb des Dokumentenflusses liegen

Methode 1: Tabellen-Zellen-Methode

CSS-Code:

p{
    width: 300px;
    height: 300px;
    border: 3px solid #555;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
img{
    vertical-align: middle;
}

HTML-Code:

<p>
    <img  src="mm.jpg" alt="Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS" >
</p>

Rendering:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

p Vertical-align: middle oben steuert die Zentrierung in vertikaler Richtung, während text-align: center steuert die horizontale Richtung. Eine interessante Tatsache ist, dass, wenn wir die Vertical-Align:-Mitte im Bild entfernen, es so aussieht:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Es ist immer noch zentriert! Ist es wirklich zentriert?

Wir sehen, dass das Bild etwas nach oben gerückt ist und nicht mehr in der vertikalen Richtung zentriert ist. Warum? Ich weiß nicht warum, wenn du es weißt, kannst du es mir dann sagen?

Aber wenn wir das Bild in Text umwandeln:

CSS-Code:

p{
    border: 3px solid #555;
    width: 300px;
    height: 200px;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
span{
    vertical-align: middle;
}

HTML-Code:

<p>
    <span>这是放在span中的文字,通过外层p设置display: table-cell以及vertical-align: middle实现垂直居中。</span>
</p>

Rendering:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Wenn wir „vertikal-align: middle of span“ entfernen, ist dies der Fall So:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Sehen Sie den Unterschied? Text hat einen kleineren Zeilenabstand. Wenn Sie den Code auf Ihrem Computer ausführen, werden Sie feststellen, dass diese Textzeilen in die Mitte verschoben wurden und nicht wie im Bild nach oben verschoben wurden. Ich versuche auch herauszufinden, was los ist. Wenn Sie den Grund kennen, sagen Sie es mir bitte.

Methode 2: Flexible Box-Methode

CSS-Code:

.container{
      width: 300px;
      height: 200px;
      border: 3px solid #546461;
      display: -webkit-flex;
      display: flex;
      -webkit-align-items: center;
      align-items: center;
      -webkit-justify-content: center;
      justify-content: center;
 }
 .inner{
      border: 3px solid #458761;
      padding: 20px;
 }

HTML-Code:

<p class="container">
    <p class="inner">
        我在容器中水平垂直居中
    </p>
</p>

Rendering:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

align-items control Vertical Zentrierung, Justify-Content steuert die horizontale Zentrierung. Dies ist eine neue Methode von CSS3. Der Status der Browserunterstützung ist wie folgt:

Mehrere Methoden zur horizontalen und vertikalen Zentrierung in CSS

Das Obige ist der gesamte Inhalt dieses Artikels , und ich hoffe, dass jeder die chinesische Website unterstützt.

Weitere verwandte Artikel zu verschiedenen Methoden der horizontalen und vertikalen CSS-Zentrierung finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn