Estou exibindo várias caixas em uma linha com altura e largura fixas, geradas a partir de <li> tags. agora preciso alinhar o texto no centro vertical. O alinhamento vertical do CSS não tem impacto, talvez eu esteja faltando alguma coisa ???
Não estou procurando truques usando (margem, preenchimento, altura da linha), eles não funcionarão porque alguns textos são longos e se quebram em duas linhas.
Encontre o código real:
Código CSS
ul.catBlock{
width:960px;
height: 270px;
border:1px solid #ccc;
}
ul.catBlock li{
list-style: none;
float:left;
display:block;
text-align: center;
width:160px;
height: 100px;
}
ul.catBlock li a{
display: block;
padding: 30px 10px 5px 10px;
height:60px;
}
Código HTML
<ul class="catBlock">
<li><a href="#">IP Phone</a></li>
<li><a href="#">Dual SIM Switch Server</a></li>
<li><a href="#">IP PBX</a></li>
</ul>
html
css
vertical-alignment
AK4668
fonte
fonte
Respostas:
Defina o pai com
display: table
e o próprio elemento comvertical-align: middle
edisplay: table-cell
.fonte
<li>
ficar em uma única linha?line-height
é como você alinha o texto verticalmente. É bastante normal e não o considero um "hack". Basta adicionarline-height: 100px
ao seuul.catBlock li
e tudo ficará bem.Nesse caso, pode ser necessário adicioná-lo a,
ul.catBlock li a
pois todo o texto dentro deli
também está dentro de uma
. Já vi coisas estranhas acontecerem quando você faz isso, então tente as duas e veja qual delas funciona.fonte
vertical-align: middle
se você tiverdisplay: table-cell
. Eu nunca usei isso. Dê uma olhada aqui: phrogz.net/css/vertical-align/index.htmlPor mais anos que esta resposta possa estar atrasada, qualquer pessoa que encontrar isso pode apenas querer tentar
O suporte do navegador para flexbox é muito melhor do que era quando @scottjoudry postou sua resposta acima, mas você ainda pode querer considerar prefixar ou outras opções se estiver tentando oferecer suporte a navegadores muito mais antigos. caniuse: flex
fonte
list-style-image
Surpreendentemente (ou não), a
vertical-align
ferramenta realmente funciona melhor para esse trabalho. O melhor de tudo é que nenhum Javascript é necessário.No exemplo a seguir, estou posicionando a
outer
classe no meio do corpo e ainner
classe no meio daouter
classe.Visualização: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
O alinhamento vertical funciona alinhando os centros dos elementos que estão próximos uns dos outros. Aplicar o alinhamento vertical a um único elemento não faz absolutamente nada. Se você adicionar um segundo elemento que não tem largura, mas é a altura do contêiner, seu único elemento se moverá para o centro vertical com este elemento sem largura, centralizando-o verticalmente. Os únicos requisitos são que você defina ambos os elementos como inline (ou inline-block) e defina seu atributo de alinhamento vertical como
vertical-align: middle
.Nota: Você pode notar no meu código abaixo que minha
<span>
tag e<div>
tag estão se tocando. Como ambos são elementos inline, um espaço adicionará um espaço entre o elemento no-width e seu div, portanto, certifique-se de deixá-lo de fora.fonte
No futuro, esse problema será resolvido pelo flexbox. No momento, o suporte do navegador é desanimador, mas é compatível de uma forma ou de outra em todos os navegadores atuais.
Suporte para navegador: http://caniuse.com/flexbox
Histórico do Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
fonte
Não há respostas perfeitas fornecidas aqui, exceto a resposta de Asaf que não fornece nenhum código ou exemplo, então eu gostaria de contribuir com a minha ...
Para fazer
vertical-align: middle;
funcionar, você precisa usardisplay: table;
para seuul
elemento edisplay: table-cell;
parali
elementos e do que pode usarvertical-align: middle;
parali
elementos.Você não precisa fornecer nenhum conteúdo explícito
margins
,paddings
para tornar seu texto verticalmente no meio.Demo
fonte
Conforme explicado aqui: https://css-tricks.com/centering-in-the-unknown/ .
Captura de tela:
fonte
Experimente esta solução
Funciona melhor na maioria dos casos
você pode ter que usar div em vez de li para isso
fonte
Solução simples para o alinhamento vertical do meio ... para mim, funciona perfeitamente
fonte