Você pode usar line-height: 50px;
, você não precisará de vertical-align: middle;
lá.
Demo
O exemplo acima falhará se você tiver várias linhas, portanto, nesse caso, você pode agrupar seu texto usando span
e depois usar display: table-cell;
e display: table;
junto com vertical-align: middle;
, além disso, não se esqueça de usar width: 100%;
para#abc
Demo
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
display: table;
width: 100%;
}
#abc span {
vertical-align:middle;
display: table-cell;
}
Outra solução que posso pensar aqui é usar a transform
propriedade translateY()
onde, Y
obviamente, significa Y Axis. É bem simples ... Tudo o que você precisa fazer é definir a posição dos elementos para absolute
e depois posicionar 50%
a top
partir do eixo e traduzir com o eixo negativo-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Demo
Observe que isso não será suportado em navegadores mais antigos, por exemplo, o IE8, mas você pode criar o IE9 e outras versões mais antigas do navegador Chrome e Firefox usando -ms, -moz
e -webkit
prefixos, respectivamente.
Para mais informações transform
, você pode consultar aqui .
É simples: dê ao pai o seguinte:
e dê à criança div (s) o seguinte:
É isso aí!
fonte
display:table;
o pai aos pais para fazê-lo funcionar.Pergunta antiga, mas atualmente o CSS3 torna o alinhamento vertical realmente simples !
Basta adicionar ao
#abc
seguinte css:Demonstração simples
Demonstração da pergunta original atualizada
Exemplo simples:
fonte
CSS3
?Encontrei esta solução por Sebastian Ekström. É rápido, sujo e funciona muito bem. Mesmo se você não souber a altura dos pais:
Leia o artigo completo aqui .
fonte
transform-style: preserve-3d;
:!Você pode usar a altura da linha maior que a altura da div. Mas para mim a melhor solução é esta ->
position:relative; top:50%; transform:translate(0,50%);
fonte
Que tal adicionar
line-height
?Violino, altura da linha
Ou por
padding
diante#abc
. Este é o resultado com preenchimentoAtualizar
Adicione no seu css:
O resultado . Espero que seja o que você está procurando.
fonte
Tente o seguinte:
Outro método para centralizar uma div:
fonte
fonte
Use a propriedade translateY CSS para centralizar verticalmente o texto no contêiner
E depois aplique-o ao seu DIV contendo
Ajuste a porcentagem de tradução para atender às suas necessidades. Espero que isto ajude
fonte
Este código é para o alinhamento vertical central e horizontal central, sem especificar a altura fixa:
fonte