Considere o seguinte código :
HTML:
<div>
<label for='name'>Name:</label>
<input type='text' id='name' />
</div>
CSS:
div {
height: 50px;
border: 1px solid blue;
}
Qual seria o método mais fácil de colocar o label
e o input
no meio do div
(verticalmente)?
css
html
vertical-alignment
Misha Moroshko
fonte
fonte
<table>
e aplicarvalign='middle'
aos seus<td>
.Respostas:
As vantagens deste método são que você pode alterar a altura do
div
, alterar a altura do campo de texto e alterar o tamanho da fonte e tudo ficará sempre no meio.http://jsfiddle.net/53ALd/6/
fonte
display: table-cell
. Isso é compatível com alguns navegadores?display: table-cell
torna os divs se comportam de maneiras que não deveriam se comportar, como subsequente renderização de divs na mesma linha / etc.uma abordagem mais moderna seria usar css flex-box.
um exemplo mais complexo ... se você tiver vários elementos no fluxo flexível, você pode usar o alinhamento próprio para alinhar elementos únicos de maneira diferente do alinhamento especificado ...
também é super fácil de centralizar horizontal e verticalmente:
fonte
display:flex
tem menos compatibilidade, funciona no Chrome 29+Isso funciona em vários navegadores, fornece mais acessibilidade e vem com menos marcação. vala o div. Embrulhe o rótulo
fonte
for
eid
para obter o máximo de simplicidade.Estou ciente de que essa pergunta foi feita há mais de dois anos, mas para qualquer espectador recente, aqui está uma solução alternativa, que tem algumas vantagens sobre a solução de Marc-François:
Aqui, simplesmente adicionamos um
line-height
igual à altura do div. A vantagem é que agora você pode alterar a propriedade de exibição da div conforme desejar, para,inline-block
por exemplo, e seu conteúdo permanecerá centralizado verticalmente. A solução aceita requer que você trate o div como uma célula de tabela. Isso deve funcionar perfeitamente, em vários navegadores.A única outra vantagem é que é apenas mais uma regra CSS em vez de duas :)
Felicidades!
fonte
Use
padding
nadiv
( superior e inferior ) evertical-align:middle
nalabel
einput
.exemplo em http://jsfiddle.net/VLFeV/1/
fonte
div
e o conteúdo interno não se moveu. Estou esquecendo de algo?Envolva o rótulo e insira em outro div com uma altura definida. Isso pode não funcionar em versões do IE anteriores a 8.
fonte
Você pode usar a
display: table-cell
propriedade como no seguinte código:fonte