Estoy mostrando un número de cuadros en una fila con altura y ancho fijos, generados a partir de etiquetas <li>. ahora necesito alinear el texto en el centro vertical. La alineación vertical de CSS no tiene impacto, ¿tal vez me falta algo?
No estoy buscando trucos de uso (margen, relleno, altura de línea), estos no funcionarán porque algunos textos son largos y se dividirán en dos líneas.
Encuentre el 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
fuente
fuente

Respuestas:
Defina el padre con
display: tabley el elemento mismo convertical-align: middleydisplay: table-cell.fuente
<li>entrar en una sola fila?line-heightes cómo alinea verticalmente el texto. Es bastante estándar y no lo considero un "truco". Solo agregueline-height: 100pxa suul.catBlock liy estará bien.En este caso, es posible que deba agregarlo,
ul.catBlock li aya que todo el texto dentro delitambién está dentro de una. He visto que suceden algunas cosas raras cuando haces esto, así que prueba ambos y mira cuál funciona.fuente
vertical-align: middlesi es asídisplay: table-cell. Aunque nunca lo he usado. Eche un vistazo aquí: phrogz.net/css/vertical-align/index.htmlSin importar cuán tarde sea esta respuesta, cualquiera que se encuentre con esto puede querer probar
La compatibilidad del navegador con flexbox es mucho mejor de lo que era cuando @scottjoudry publicó su respuesta anterior, pero es posible que desee considerar el uso de prefijos u otras opciones si está tratando de admitir navegadores mucho más antiguos. caniuse: flexión
fuente
list-style-imageen Chrome - la imagen desapareceSorprendentemente (o no), la
vertical-alignherramienta funciona mejor para este trabajo. Lo mejor de todo es que no se requiere Javascript.En el siguiente ejemplo, coloco la
outerclase en el medio del cuerpo y lainnerclase en el medio de laouterclase.Vista previa: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
La alineación vertical funciona alineando los centros de los elementos que están uno al lado del otro. La aplicación de alineación vertical a un solo elemento no hace absolutamente nada. Si agrega un segundo elemento que no tiene ancho pero es la altura del contenedor, su único elemento se moverá al centro verticalmente con este elemento sin ancho, lo que lo centrará verticalmente. Los únicos requisitos son que establezca ambos elementos en línea (o bloque en línea) y establezca su atributo de alineación vertical en
vertical-align: middle.Nota: Puede notar en mi código a continuación que mi
<span>etiqueta y mi<div>etiqueta se tocan. Debido a que ambos son elementos en línea, un espacio en realidad agregará un espacio entre el elemento sin ancho y su div, así que asegúrese de omitirlo.fuente
En el futuro, este problema será resuelto por flexbox. En este momento, el soporte del navegador es pésimo, pero es compatible de una forma u otra en todos los navegadores actuales.
Soporte del navegador: http://caniuse.com/flexbox
Antecedentes de Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
fuente
No se proporcionan respuestas perfectas aquí, excepto la respuesta de Asaf, que no proporciona ningún código ni ejemplo, por lo que me gustaría contribuir con la mía ...
Para que
vertical-align: middle;funcione, debe usardisplay: table;para suulelemento ydisplay: table-cell;paralielementos y lo que puede usarvertical-align: middle;paralielementos.No es necesario proporcionar ninguna explícita
margins,paddingspara que su texto verticalmente medio.Manifestación
fuente
Como se explica aquí: https://css-tricks.com/centering-in-the-unknown/ .
Captura de pantalla:
fuente
Prueba esta solución
Funciona mejor en la mayoría de los casos
es posible que tenga que usar div en lugar de li para eso
fuente
Solución simple para alineación vertical en el medio ... para mí funciona como un encanto
fuente