Betrachten Sie den folgenden Code :
HTML:
<div>
<label for='name'>Name:</label>
<input type='text' id='name' />
</div>
CSS:
div {
height: 50px;
border: 1px solid blue;
}
Was wäre die einfachste Methode, um das label
und das input
in die Mitte des div
(vertikalen) zu setzen?
css
html
vertical-alignment
Mischa Moroshko
quelle
quelle
<table>
und esvalign='middle'
auf sein<td>
s anzuwenden .Antworten:
Der Vorteil dieser Methode besteht darin, dass Sie
div
die Höhe des Textfelds und die Höhe des Textfelds sowie die Schriftgröße ändern können und alles immer in der Mitte bleibt.http://jsfiddle.net/53ALd/6/
quelle
display: table-cell
. Wird das in bestimmten Browsern unterstützt?display: table-cell
verhält, wie es nicht erwartet wird, z. B. nachfolgendes Rendern von divs in derselben Zeile / etc.Ein moderner Ansatz wäre die Verwendung einer CSS-Flexbox.
Ein komplexeres Beispiel ... Wenn Sie mehrere Elemente im Flex-Flow haben, können Sie Align-Self verwenden, um einzelne Elemente anders als das angegebene Align auszurichten ...
Es ist auch super einfach, horizontal und vertikal zu zentrieren:
quelle
display:flex
hat weniger Kompatibilität, funktioniert auf Chrom 29+Dies funktioniert browserübergreifend, bietet mehr Zugänglichkeit und weniger Markup. Graben Sie die div. Wickeln Sie das Etikett ein
quelle
for
undid
für maximale Einfachheit weglassen können .Ich bin mir bewusst, dass diese Frage vor über zwei Jahren gestellt wurde, aber für alle neueren Zuschauer ist hier eine alternative Lösung, die einige Vorteile gegenüber Marc-François 'Lösung hat:
Hier fügen wir einfach nur einen
line-height
Wert hinzu, der der Höhe des Div entspricht. Der Vorteil besteht darin, dass Sie jetzt die Anzeigeeigenschaft des div nachinline-block
Belieben ändern können und der Inhalt vertikal zentriert bleibt. Die akzeptierte Lösung erfordert, dass Sie das div als Tabellenzelle behandeln. Dies sollte perfekt funktionieren, browserübergreifend.Der einzige andere Vorteil ist, dass es nur noch eine CSS-Regel statt zwei gibt :)
Prost!
quelle
Verwenden Sie
padding
auf derdiv
( oben und unten ) undvertical-align:middle
auf derlabel
undinput
.Beispiel unter http://jsfiddle.net/VLFeV/1/
quelle
div
und der Inhalt im Inneren hat sich überhaupt nicht bewegt. Vermisse ich etwasWickeln Sie das Etikett ein und geben Sie es in ein anderes Div mit einer definierten Höhe ein. Dies funktioniert möglicherweise nicht in IE-Versionen unter 8.
quelle
Sie können die
display: table-cell
Eigenschaft wie im folgenden Code verwenden:quelle