es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>
Tags:  , , ,

Answer

  1. Avatar for 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.

Comments are closed.