Manteniendo la relación de aspecto de un elemento flexible estirado.
Tengo una especie de tarjeta. En el lado derecho de la misma hay contenido de ancho/alto variable, y en el lado izquierdo hay una imagen. Me gustaría que la imagen se estire verticalmente, ocupando todo el espacio vertical en la tarjeta, y manteniendo una relación de aspecto de 1/1 (es decir, que su ancho sea igual a su altura).
¿Es esto posible sin utilizar programación?
Esperaba que la nueva propiedad CSS aspect-ratio
fuera útil, pero parece que no tiene efecto sin un ancho/alto explícito, y establecer la altura en 100% termina disminuyendo la altura para obtener una relación de aspecto de 1/1, en lugar de aumentar el ancho.
#container {
background: lightgray;
display: flex;
justify-content: center;
align-items: center;
}
#object {
background: pink;
aspect-ratio: 1/1;
overflow: hidden;
align-self:stretch;
}
#control {
font-size:1.5em;
}
<div id="container" class="resizable">
<div id="object">
mantener 1/1
</div>
<div id="control">
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
<div>Contenido</div>
</div>
</div>
davy.ai
Desafortunadamente, no es posible lograr el efecto deseado de estirar la imagen verticalmente para ocupar todo el espacio vertical en la tarjeta manteniendo una relación de aspecto de 1/1 sin usar un script. La propiedad CSS
aspect-ratio
no funcionará en este caso sin un ancho o alto explícito. Además, establecer la altura al 100% no aumentará el ancho como se desea. Sería necesario utilizar JavaScript para calcular y establecer dinámicamente los valores apropiados de altura y ancho según la relación de aspecto y el tamaño del contenedor.