Digamos que tengo un botón de arranque con un icono de fuente impresionante y algo de texto:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
¿Cómo hago que el texto aparezca centrado verticalmente? El texto está alineado con el borde inferior del icono ahora: http://jsfiddle.net/V7DLm/1/
EDITAR: Tengo una posible solución : http://jsfiddle.net/CLdeG/1/ pero se siente un poco hacky: introduce una etiqueta p adicional, usa pull-left y display: table. Quizás alguien pueda sugerir una forma más fácil.
html
css
font-awesome
Pablo
fuente
fuente
Respuestas:
Solo tenía que hacer esto yo mismo, debes hacerlo al revés.
Por supuesto, no podría usar estilos en línea y apuntarlo con su propia clase css. Pero esto funciona en forma de copiar y pegar.
Ver aquí: Alineación vertical del texto y el ícono en el botón
Sin embargo, si fuera por mí, no usaría el ícono-2x. Y simplemente especifique el tamaño de fuente yo mismo, como en el siguiente
para un ejemplo de trabajo, vea JsFiddle
fuente
Utilizo iconos al lado del texto el 99% del tiempo, así que realicé el cambio globalmente:
Agregue 3x, 4x, etc. a la misma definición según sea necesario.
fuente
vertical-align: middle;
: es posible que me falte algo aquí. Por favor explique si es así.vertical-align: middle
, quieren decir si está usandoblock
elementos . Si está utilizandoinline
,inline-block
otable-cell
, debería ser bueno. MDN:vertical-align
Después de considerar todas las opciones sugeridas, la solución más limpia parece ser establecer la altura de la línea y alinear todo verticalmente:
Ver demostración de Jsfiddle
CSS:
fuente
Si las cosas no se alinean, un simple
line-height: inherit;
CSS a través de elementos específicos de i.fa que tienen problemas de alineación podría ser suficiente.También podría utilizar una solución global que, debido a una especificidad CSS ligeramente superior, anulará la regla .fa de FontAwesome que especifica
line-height: 1
sin requerir!important
la propiedad:Solo asegúrese de que la solución global anterior no cause ningún otro problema en lugares donde también pueda usar los iconos FontAwesome.
fuente
una opción de flexbox - font awesome 4.7 y abajo
URL alojada de FA 4.x: https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
violín
http://jsfiddle.net/Hastig/V7DLm/180/
usando flex y font awesome 5
URL alojada de FA 5.x: https://use.fontawesome.com/releases/v5.0.8/js/all.js
violín
https://jsfiddle.net/3bpjvof2/
fuente
La forma más simple es establecer la propiedad css de alineación vertical en el medio
fuente
.svg-inline--fa
para FontAwesome 5fa-clock
en la clase?Esto funcionó bien para mí.
fuente
Intenta configurar tu icono como
height: 100%
No necesita hacer nada con el contenedor (por ejemplo, su botón).
Esto requiere Font Awesome 5. No estoy seguro si funciona para versiones anteriores de FA.
Tenga en cuenta que el icono es en realidad un
svg
gráfico.Manifestación
fuente
Para aquellos que usan Bootstrap 4 es simple:
fuente
Otra opción para ajustar la altura de la línea de un icono es usar un porcentaje de la
vertical-align
propiedad. Por lo general, 0% es la parte inferior y 100% en la parte superior, pero uno podría usar valores negativos o más de cien para crear efectos interesantes.fuente
Envolvería el texto de forma que pueda orientarlo por separado. Ahora, si flota tanto hacia la izquierda como hacia la izquierda, puede usar la altura de línea para controlar el espaciado vertical de la. Ajustándolo a la misma altura que (30px) lo alineará en el medio. Ver aquí .
Nuevo marcado:
Nuevo CSS:
fuente
vertical-align: middle
el icono y el texto. De esa manera no estás haciendo suposiciones sobre la altura del icono y hay menos CSS.Cuando se usa una caja flexible, la alineación vertical de los íconos impresionantes de la fuente junto al texto puede ser muy difícil. Intenté márgenes y relleno, pero eso movió todos los elementos. Probé diferentes alineaciones flexibles como centro, inicio, línea de base, etc., pero fue en vano. La forma más fácil y limpia de ajustar solo el ícono fue establecer que contenga div en
position: relative; top: XX;
Esto hizo el trabajo perfectamente.fuente
Bueno, esta pregunta se hizo hace años. Creo que la tecnología ha cambiado bastante y la compatibilidad del navegador es mucho mejor. Podría usar la alineación vertical, pero consideraría que algunos son menos escalables y menos reutilizables. Recomendaría un enfoque de flexbox .
Aquí está el mismo ejemplo que el póster original utilizado pero con flexbox. Da estilo a un solo elemento. Si el tamaño de un botón cambia por cualquier razón, continuará estando centrado vertical y horizontalmente.
Ejemplo: JsFiddle
fuente
Simplemente defina la
vertical-align
propiedad para el elemento de icono:fuente