Flexbox tiene este comportamiento donde estira las imágenes a su altura natural. En otras palabras, si tengo un contenedor de flexbox con una imagen secundaria, y cambio el tamaño de esa imagen, la altura no cambia en absoluto y la imagen se estira.
div {
display: flex;
flex-wrap: wrap;
}
img{
width: 50%
}
<div>
<img src="https://loremflickr.com/400/300" >
<h4>Appify</h4>
<p> some text </p>
</div>
¿Qué causa esto?
Añadí Este CodePen para demostrar lo que quiero decir.
align-self:flex-start
en la imagen. No sé por qué, tal vez el valor predeterminado en Chrome es estirar.align-items: stretch
/align-self: stretch
. Si agrega un borde alrededor de cada elemento y lo eliminawrap
, notará que todos los elementos se extienden en todos los navegadores: codepen.io/anon/pen/oLXBVx?editors=1100Respuestas:
Se está estirando porque
align-self
el valor predeterminado esstretch
. Estableceralign-self
acenter
.Ver documentación aquí: align-self
fuente
align-self: start;
puede ser una respuesta más fuerte porque las imágenes deben alinearse verticalmente con la parte SUPERIOR de sus contenedores (no centradas) como lo haría cualquier imagen sin estilo (sin CSS). De cualquier manera, ambas respuestas arreglan el estiramiento. Por lo tanto, depende de lo que OP quiera, por supuesto, simplemente no obtuvo esa impresión de 'centrado verticalmente' de la publicación de OP.align-self: [flex-start, center...others]
evitará que la imagen tome el 100% del ancho de los contenedores flexibles.align-self:center
lo arregla, por supuesto, pero si desea que su imagen comience desde el principio o el final del uso del contenedoralign-items: flex-start or flex-end
align-items: center
(o cualquier alineación que se ajuste a sus necesidades) en el padre.El atributo clave es
align-self: center
:fuente
Me enfrenté al mismo problema con un menú de la Fundación.
align-self: center;
no funciono para miMi solución fue envolver la imagen con un
<div style="display: inline-table;">...</div>
fuente
Agregando
margin
para alinear imágenes:Como queríamos
image
que fueraleft-aligned
, agregamos:Del mismo modo para
image
serright-aligned
, podemos agregarmargin-right: auto;
. El fragmento muestra una demostración para ambos tipos de alineación.Buena suerte...
fuente
Se estira porque el valor predeterminado de align-self es stretch. hay dos soluciones para este caso: 1. set img align-self: center O 2. set parent align-items: center
O
fuente