Es ist relativ einfach, die horizontale Zentrierung in CSS zu implementieren. Wenn Sie eine horizontale Zentrierung von Inline-Elementen oder Inline-Block-Elementen erreichen möchten, können Sie im Allgemeinen text-align: center
für das übergeordnete Element auf Blockebene festlegen. Wenn Sie eine horizontale Zentrierung von Elementen auf Blockebene erreichen möchten, können Sie . Und wenn Sie eine vertikale Mittelausrichtung erreichen möchten, ist dies möglicherweise nicht einfach. magin: auto
die Höhe ändert sich adaptiv mit dem Inhalt, der andere ist die feste Höhe.
Feste Höhe, um horizontale und vertikale Zentrierung zu erreichenMethode 1Die gebräuchlichste Methode besteht darin, Höhe + Zeilenhöhe zu verwenden, denselben Wert festzulegen und Text zu verwenden. ausrichten Mit dieser Funktion können Sie eine horizontale und vertikale Mittelausrichtung von Text erreichen<p class="container">Hello World!</p>.container { width: 300px; height: 300px; line-height: 300px; text-align: center; border: 1px solid red; }
<p class="container">Hello World!</p>.container { position: absolute; left: 50%; top: 50%; margin-left: -150px; margin-top: -150px; width: 300px; height: 300px; border: 1px solid red; }
.container { position: absolute; left: calc(50% - 150px); top: calc(50% - 150px); width: 300px; height: 300px; border: 1px solid red; }
<p class="space"></p> <p class="container"> <p class="inner"> hello world! </p> </p>.space { float: left; height: 50%; margin-top: -150px; } .container { clear: both; height: 300px; border: 1px solid red; position: relative; }
. position:relative
<p class="container">Hello World!</p>.container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); // 自身宽度和高度的一半 border: 1px solid red; }
Nachteil: Elemente werden vom Dokumentenfluss losgelöst. Wenn das Element, das zentriert werden muss, die Höhe des Ansichtsfensters bereits überschreitet, wird seine Oberseite vom Ansichtsfenster abgeschnitten.
<p class="container">Hello World!</p>.container { width: 300px; margin: 50% auto 0; border: 1px solid red; tarnsform: translateY(-50%); }
oder document.body.clientHeight
im DOM entspricht, d. h. 1vh ist gleich 1 % der Höhe des Ansichtsfensters. Informationen zu Browserkompatibilitätsproblemen mit der vh-Einheit finden Sie unter vh. Daher kann der obige Code wie folgt geändert werden, um den horizontalen und vertikalen Zentrierungseffekt zu erzielen. document.documentElement.clientHeight
<p class="container">Hello World!</p>.container { width: 300px; margin: 50vh auto 0; transform: translateY(-50%); border: 1px solid red; }
<p class="container"> <p class="inner"> <p>hello world!</p> </p> </p>.container { display: flex; height: 100vh; } .inner { margin: auto; }
erstellen, kann display: flex
nicht nur horizontal, sondern auch vertikal zentriert werden. Dies liegt daran, dass automatische Ränder den zusätzlichen Platz horizontal oder vertikal halbieren. margin: auto
verwenden, um die Ausrichtung der Hauptachse des flexiblen Artikels zu definieren, und justify-content: center
, um die Ausrichtung der Seitenachse des flexiblen Artikels zu definieren. align-items: center
<p class="container"> <p class="inner"> <p>hello world</p> </p> </p>.container { display: flex; justify-content: center; align-items: center; height: 100vh; }
verwenden, um eine Tabelle zu simulieren, und display: table
auf die Unterelemente festlegen, um diese zu erstellen Teil der Tabelle. Zellen und legen Sie gleichzeitig display: table-cell
fest. vertical-align: middle
<p class="container"> <p class="inner"> hello world! </p> </p>.container { display: table; /* 让p以表格的形式渲染 */ width: 100%; border: 1px solid red; } .inner { display: table-cell; /* 让子元素以表格的单元格形式渲染 */ text-align: center; vertical-align: middle; }
Das obige ist der detaillierte Inhalt vonZusammenfassung von CSS(3), das einen horizontalen und vertikalen Zentrierungseffekt erzielt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!