Tengo un div con dos imágenes y un h1
. Todos ellos deben estar alineados verticalmente dentro del div, uno al lado del otro.
Una de las imágenes debe absolute
colocarse dentro del div.
¿Cuál es el CSS necesario para que esto funcione en todos los navegadores comunes?
<div id="header">
<img src=".." ></img>
<h1>testing...</h1>
<img src="..."></img>
</div>
html
css
vertical-alignment
Abdu
fuente
fuente
Respuestas:
Wow, este problema es popular. Se basa en un malentendido en la
vertical-align
propiedad. Este excelente artículo lo explica:Comprensión
vertical-align
, o "Cómo (no) centrar verticalmente el contenido" por Gavin Kistner."Cómo centrarse en CSS" es una gran herramienta web que ayuda a encontrar los atributos de centrado CSS necesarios para diferentes situaciones.
En pocas palabras (y para evitar la pudrición del enlace) :
vertical-align: middle
. Sin embargo, el "contexto" no es la altura completa del contenedor principal, es la altura de la línea de texto en la que se encuentran. Ejemplo de jsfiddleabsolute
y especificar suheight
,margin-top
y latop
posición. Ejemplo de jsfiddleline-height
para que complete su altura. Este método es bastante versátil en mi experiencia. Ejemplo de jsfiddlefuente
vertical-align: middle
es así) es que debe especificar una altura fija. No es muy posible para el diseño web receptivo .inline-block
ytable-cell
elementos. Si tiene problemas con esto, intente ajustarline-height
el elemento contenedor (es decir, el contexto) ya que se usa en losvertical-align
cálculos del cuadro de línea.Ahora que el soporte de flexbox está aumentando, este CSS aplicado al elemento contenedor centraría verticalmente el elemento contenido:
Use la versión prefijada si también necesita apuntar a Explorer 10 y navegadores Android antiguos (<4.4):
fuente
align-items
secciónUsé este código muy simple:
HTML:
CSS:
Obviamente, ya sea que use a
.class
o an#id
, el resultado no cambiará.fuente
A mí me funcionó:
fuente
margin : 0 auto
, no funcionará debido a ladisplay: table-cell
fuente
justify-content: center
solucionó mi falta de centrado horizontalUna técnica de un amigo mío:
HTML:
CSS:
DEMO aquí
fuente
Para colocar elementos de bloque en el centro (funciona en IE9 y superior), necesita un contenedor
div
:fuente
Alineado cómo ? ¿Las partes superiores de las imágenes están alineadas con la parte superior del texto?
Absolutamente posicionado en relación con el DIV? ¿Quizás podrías esbozar lo que estás buscando ...?
fd ha descrito los pasos para el posicionamiento absoluto, así como para ajustar la visualización del
H1
elemento de modo que las imágenes aparezcan en línea con él. A eso, agregaré que puedes alinear las imágenes usando elvertical-align
estilo:... esto pondría el encabezado y las imágenes juntas, con los bordes superiores alineados. Existen otras opciones de alineación; consulte la documentación . También puede resultarle beneficioso soltar el DIV y mover las imágenes dentro del
H1
elemento; esto proporciona un valor semántico al contenedor y elimina la necesidad de ajustar la visualización deH1
:fuente
Use esta fórmula, y funcionará siempre sin grietas:
fuente
Casi todos los métodos necesitan especificar la altura, pero a menudo no tenemos alturas.
Así que aquí hay un truco de 3 líneas de CSS3 que no requiere conocer la altura.
Es compatible incluso en IE9.
con sus prefijos de proveedor:
Fuente: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
fuente
De dos maneras, puede alinear elementos vertical y horizontalmente
1. Bootstrap 4.3.X
para alineación vertical:
d-flex align-items-center
para alineación horizontal:
d-flex justify-content-center
2. CSS3
fuente
Mi truco es poner dentro del div una tabla con 1 fila y 1 columna, establecer el 100% del ancho y alto, y la propiedad vertical-align: middle.
Violín: http://jsfiddle.net/joan16v/sbqjnn9q/
fuente
# 3 formas de hacer que el div de centro infantil en un div padre
Método de transformación / traducción
Manifestación
fuente
Usando CSS en el centro vertical, puede dejar que los contenedores externos actúen como una tabla y el contenido como una celda de tabla. En este formato, sus objetos permanecerán centrados. :)
Anidé varios objetos en JSFiddle como ejemplo, pero la idea central es la siguiente:
HTML
CSS
El ejemplo de objetos múltiples:
HTML
CSS
Resultado
https://jsfiddle.net/martjemeyer/ybs032uc/1/
fuente
Por defecto, h1 es un elemento de bloque y se representará en la línea después de la primera img, y hará que la segunda img aparezca en la línea que sigue al bloque.
Para evitar que esto ocurra, puede configurar el h1 para que tenga un comportamiento de flujo en línea:
En cuanto a posicionar absolutamente el img dentro del div , debe configurar el div que lo contiene para que tenga un "tamaño conocido" antes de que esto funcione correctamente. En mi experiencia, también necesita cambiar el atributo de posición lejos de la posición predeterminada: position: relative funciona para mí:
Si puede hacer que eso funcione, puede intentar eliminar progresivamente los atributos de altura, ancho y posición de div.header para obtener los atributos mínimos necesarios para obtener el efecto que desea.
ACTUALIZAR:
Aquí hay un ejemplo completo que funciona en Firefox 3:
fuente
Podemos usar un cálculo de función CSS para calcular el tamaño del elemento y luego colocar el elemento hijo en consecuencia.
HTML de ejemplo:
Y CSS:
Demo creada aquí: https://jsfiddle.net/xnjq1t22/
Esta solución funciona bien con responsive
div
height
ywidth
también.Nota: La función calc no se prueba para compatibilidad con navegadores antiguos.
fuente
Según hoy, he encontrado una nueva solución para alinear verticalmente varias líneas de texto en un div usando CSS3 (y también estoy usando el sistema de cuadrícula bootstrap v3 para embellecer la interfaz de usuario), que es la siguiente:
Según tengo entendido, el elemento primario inmediato del texto que contiene el elemento debe tener cierta altura. Espero que te ayude también. ¡Gracias!
fuente
Mi nueva forma favorita de hacerlo es con una cuadrícula CSS:
fuente
¡Solo usa una tabla de una celda dentro del div! Simplemente configure la altura de la celda y la tabla con 100% y puede usar la alineación vertical.
¡Una tabla de una celda dentro del div maneja la alineación vertical y es compatible con versiones anteriores de la Edad de Piedra!
fuente
He estado usando la siguiente solución (sin posicionamiento y sin altura de línea) desde hace más de un año, también funciona con IE 7 y 8.
fuente
Esta es mi solución personal para un elemento i dentro de un div
JSFiddle Ejemplo
HTML
CSS
fuente
Para mí, funcionó de esta manera:
El elemento "a" se convirtió en un botón, usando clases Bootstrap, y ahora está centrado verticalmente dentro de un "div" externo.
fuente
fuente
Sólo esta:
¡Una tabla de una celda dentro del div maneja la alineación vertical y es compatible con versiones anteriores de la Edad de Piedra!
fuente
fuente
Aquí hay otro enfoque (receptivo):
http://jsfiddle.net/herrfischerhamburg/JcVxz/
fuente
Soy un tipo .NET que acaba de ingresar a la programación web. No usé CSS (bueno, un poco). Usé un pequeño JavaScript para lograr el centrado vertical junto con la función .css de jQuery.
Solo estoy publicando todo desde mi prueba. Probablemente no sea demasiado elegante, pero funciona hasta ahora.
fuente
...
o CSS
Cobertura del navegador
fuente
table-cell
, lo que hace quevertical-align: middle;
funcione. Aún mejor, funciona sin necesidad de un contenedor anidado / buffer div, y funciona tanto para texto como para imágenes (o ambos), y no necesita cambiar las propiedades de posición.