it-swarm.com.de

Vertikal ausrichten mit CSS 3

Gibt es in CSS 3 eine Möglichkeit, ein Blockelement vertikal auszurichten? Hast du ein Beispiel? Vielen Dank.

72
tho

Habe mir dieses Problem kürzlich angesehen und versucht:

HTML:

<body>
    <div id="my-div"></div>
</body>

CSS:

#my-div {               
    position: absolute;
    height: 100px;
    width: 100px;    
    left: 50%;
    top: 50%;
    background: red;
    transform: translate(-50%, -50%);    
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
}

Hier ist die Geige:

http://jsfiddle.net/sTcp9/6/

Es funktioniert sogar, wenn "width/height: auto" anstelle von festen Maßen verwendet wird. Getestet auf den neuesten Versionen unter Firefox, Chrome und IE (* keuch *).

83
Charlie

Hinweis: In diesem Beispiel wird Entwurfsversion des Flexible Box Layout Module verwendet. Es wurde durch das inkompatible moderne Spezifikation ersetzt

Zentrieren Sie die untergeordneten Elemente einer div-Box, indem Sie die Eigenschaften box-align und box-pack zusammen verwenden.

Beispiel:

div
{
width:350px;
height:100px;
border:1px solid black;

/* Internet Explorer 10 */
display:-ms-flexbox;
-ms-flex-pack:center;
-ms-flex-align:center;

/* Firefox */
display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;

/* Safari, Opera, and Chrome */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;

/* W3C */
display:box;
box-pack:center;
box-align:center;
} 
34
Crashalot

Verwendung von Flexbox:

.container {
    display: flex;
    /* Vertical align: */
    align-items: center;
    /* Horizontal align: */
    justify-content: center;
}

jsFiddle: http://jsfiddle.net/maars/8Uyvf

Browser-Unterstützung: http://caniuse.com/flexbox

32

ein paar möglichkeiten:

1. Absolute Positionierung - Sie müssen eine deklarierte Höhe haben, damit dies funktioniert:

<div>
   <div class='center'>Hey</div>
</div>

div {height: 100%; width: 100%; position: relative}
div.center {
     width: 100px;
     height: 100px;
     top: 50%;
     margin-top: -50px;
}

* 2. Verwenden Sie display: table http://jsfiddle.net/B7CpL/2/ *

<div>
     <img src="/img.png" />
     <div class="text">text centered with image</div>
</div>


div {
     display: table;
     vertical-align: middle
}

div img,
div.text {
     display: table-cell;
     vertical-align: middle
}
  1. Ein ausführlicheres Tutorial mit display: table

http://css-tricks.com/vertically-center-multi-lined-text/

9
j-man86

Es gibt eine einfache Möglichkeit, ein Div in CSS vertikal und horizontal auszurichten.

Setzen Sie einfach eine Höhe zu Ihrem div und wenden Sie diesen Stil an

.hv-center {
    margin: auto;
    position: absolute;
    top: 0; left: 0; bottom: 0; right: 0;
}

Hoffe das hat geholfen.

2
Edouard Kombo

Versuch das auch einwandfrei zu funktionieren:

html:

   <body>
    <div id="my-div"></div>
   </body>

css:

#my-div {               
    position: absolute;
    height: 100px;
    width: 100px;    
    left: 50%;
    top: 50%;
    background: red;
    display: table-cell;
    vertical-align: middle

}
0
Mr.G