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: table
y el elemento mismo convertical-align: middle
ydisplay: table-cell
.fuente
<li>
entrar en una sola fila?line-height
es cómo alinea verticalmente el texto. Es bastante estándar y no lo considero un "truco". Solo agregueline-height: 100px
a suul.catBlock li
y estará bien.En este caso, es posible que deba agregarlo,
ul.catBlock li a
ya que todo el texto dentro deli
tambié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: middle
si 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-image
en Chrome - la imagen desapareceSorprendentemente (o no), la
vertical-align
herramienta funciona mejor para este trabajo. Lo mejor de todo es que no se requiere Javascript.En el siguiente ejemplo, coloco la
outer
clase en el medio del cuerpo y lainner
clase en el medio de laouter
clase.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 suul
elemento ydisplay: table-cell;
parali
elementos y lo que puede usarvertical-align: middle;
parali
elementos.No es necesario proporcionar ninguna explícita
margins
,paddings
para 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