So zentrieren Sie ein Div in CSS vertikal

php中世界最好的语言
Freigeben: 2017-11-27 09:54:42
Original
1635 Leute haben es durchsucht

Wenn ein Div mit einer festen Höhe und Breite vertikal auf der Webseite zentriert ist, muss es meiner Meinung nach sehr einfach sein. Aber wenn es ein Div mit einer festen Höhe und Breite ist, wie geht das? zentrieren? Wie werden diese Divs also vertikal zentriert? In diesem Artikel fasse ich

Feste Höhe und Breite div vertikal zentriert

enter image description here
Nach dem Login kopieren

Wie oben gezeigt, ist die feste Höhe und Breite sehr einfach und wird wie folgt geschrieben:

 position: absolute;
 left: 50%;
 top: 50%;
width:200px;
height:100px;
margin-left:-100px;
margin-top:-50px;
Nach dem Login kopieren

Methode zum vertikalen Zentrieren von Divs ohne feste Höhe und Breite

Methode 1:

Verwenden Sie ein „Ghost“-Pseudoelement (unsichtbares Pseudoelement) und einen Inline-Block / vertikal ausrichten Es kann in der Mitte platziert werden, was sehr clever ist. Diese Methode erfordert jedoch, dass das zu zentrierende Element ein Inline-Block ist, was keine wirklich universelle Lösung ist.

HTML lautet wie folgt:

<div style="height: 300px;">
    <div>
        <h1>haorooms案例题目</h1>
        <p>haorooms案例内容,haorooms案例内容haorooms案例内容haorooms案例内容haorooms案例内容haorooms案例内容haorooms案例内容haorooms案例内容haorooms案例内容</p>
    </div>
</div>
Nach dem Login kopieren

CSS lautet wie folgt:

/* This parent can be any width and height */
.block {
  text-align: center;
}
/* The ghost, nudged to maintain perfect centering */
.block:before {
  content: &#39;&#39;;
  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: 50%;
}
Nach dem Login kopieren

Methode 2:

Sie können die Tabellenlayoutmethode verwenden , aber diese Methode hat auch Einschränkungen!

wird wie folgt geschrieben:

<table style="width: 100%;">
  <tr>
     <td style="text-align: center; vertical-align: middle;">
          Unknown stuff to be centered.
     </td>
  </tr>
</table>
Nach dem Login kopieren

Da das Schreiben von Tabellen zeitaufwändiger ist, können Sie statt Tabelle auch div verwenden, geschrieben wie folgt:

html:

<div>
   <div>
       Unknown stuff to be centered.
   </div>
</div>
css:
.something-semantic {
   display: table;
   width: 100%;
}
.something-else-semantic {
   display: table-cell;
   text-align: center;
   vertical-align: middle;
}
Nach dem Login kopieren

Methode drei, die ultimative Lösung:

Die beiden oben genannten Methoden haben möglicherweise ihre Grenzen. Die dritte Methode, die ich eingeführt habe, ist eine ausgereiftere Methode der vertikalen Zentrierung, die keine feste Höhe hat und Breite div! Die Methode ist jedoch in CSS3 geschrieben. Für Kinder, die mit IE8 kompatibel sein möchten, wird die Verwendung der oben genannten Methode empfohlen!

Die Methode ähnelt unserer festen Höhe und Breite, aber ohne Rand verwenden wir Translate()

Die Demo lautet wie folgt:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>haorooms不固定高度div写法</title>
    <style>
.center {
  position: fixed;
  top: 50%;
  left: 50%;
  background-color: #000;
  width:50%;
  height: 50%;
-webkit-transform: translateX(-50%) translateY(-50%);
}
    </style>
</head>
<body>
    <div></div>
</body>
</html>
Nach dem Login kopieren

Mein CSS oben ist Nur für Webkit-Kernel-Browser, andere Kernel-Browser sind wie folgt geschrieben:

-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
Nach dem Login kopieren

Bezüglich der Schreibweise jedes Browsers können Sie meinen vorherigen Artikel lesen: http://www.haorooms.com/post /css_common

Einige Popup-Ebenenstile können mit dieser Methode auch zentriert werden

position: fixed;
top: 50%;
left: 50%;
width: 50%;
max-width: 630px;
min-width: 320px;
height: auto;
z-index: 2000;
visibility: hidden;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
Nach dem Login kopieren

Variable CSS3-Breite, hohe Ebene, vertikale Zentrierung

Sie können eine variable Breite in nur wenigen Minuten erreichen drei Sätze Breite horizontal zentriert vertikal.

justify-content:center;//子元素水平居中
align-items:center;//子元素垂直居中
display:-webkit-flex;
Nach dem Login kopieren

Fügen Sie die obigen drei Sätze zum übergeordneten Element hinzu, um eine horizontale und vertikale Zentrierung der untergeordneten Elemente zu erreichen.

Verwenden Sie „margin:auto“ für die vertikale Zentrierung

Wenn Sie den Randwert auf „Auto“ setzen, können wir den verbleibenden Platz zuweisen! Wir wissen, dass Elemente auf Blockebene auf margin:0 auto gesetzt sind; sie können links, rechts und zentriert angezeigt werden! Gibt es eine Möglichkeit, den Rand oben, unten, links und rechts zu zentrieren, nachdem er auf margin:auto gesetzt wurde? Durch die Zentrierung oben, unten, links und rechts können wir unsere vertikale Zentrierung erreichen!

Die Antwort lautet: Ja, solange wir oben und unten genügend Platz lassen, können wir den Rand oben und unten automatisch zuweisen lassen.

Wir können die Positionierung nutzen, um dem Rand nach oben, unten, links und rechts genügend Platz zu geben! Dann können Sie margin:auto verwenden, um eine vertikale Zentrierung zu erreichen!

Die Implementierung von HTML ist wie folgt: (Erstellen Sie ein einfaches vertikales Popup-Feld)

<div>
    <div></div>
</div>
Nach dem Login kopieren

Der CSS-Code ist wie folgt, er ist sehr einfach und weist eine gute Kompatibilität auf unterstützt IE8+

.father{position:fixed;width:100%;height:100%;top;0;left:0;background-color:rgba(0,0,0,.7);}
.son{position: absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;margin:auto;background-color:red;}
Nach dem Login kopieren

Auf diese Weise können Sie eine vertikale Zentrierung erreichen, ist das nicht sehr einfach? Weitere spannende Inhalte finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!


Verwandte Lektüre:

So realisieren Sie den Popup-Effekt von Eingabeaufforderungstext in CSS3

CSS3 So implementieren Sie eine Tippanimation in

So implementieren Sie einen Ladeanimationseffekt in CSS3

Das obige ist der detaillierte Inhalt vonSo zentrieren Sie ein Div in CSS vertikal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage