Rellenar una imagen
Aquí tienes cómo puedes usar CSS y la relación de aspecto para centrar y rellenar una imagen:
- Primero, necesitas envolver tu imagen en un elemento contenedor, como un
<div>o<figure>. Esto te permitirá aplicar estilos al contenedor que afectarán la imagen en su interior. - Establece la propiedad
positiondel contenedor comorelative. Esto te permitirá posicionar la imagen dentro del contenedor. - Añade un pseudo-elemento
::afteral contenedor. Esto se usará para mantener la relación de aspecto de la imagen y crear el relleno. - Establece la propiedad
contentdel pseudo-elemento::aftercomo una cadena vacía. Esto es necesario para crear el elemento. - Establece la propiedad
padding-bottomdel pseudo-elemento::aftera un valor en porcentaje que corresponda a la relación de aspecto de la imagen. Por ejemplo, si tu imagen tiene una relación de aspecto de 4:3, deberías establecer el relleno a75%(ya que 3/4 = 0.75). Esto creará el relleno debajo de la imagen. - Establece la propiedad
positiondel pseudo-elemento::aftercomoabsolute. Esto posicionará el elemento dentro del contenedor. - Establece las propiedades
top,left,bottom, yrightdel pseudo-elemento::aftera0. Esto hará que el elemento llene el contenedor, creando el relleno. - Finalmente, establece la propiedad
positionde la imagen comoabsolute. Esto te permitirá centrar la imagen dentro del contenedor usando las propiedadestop,left,bottom, yright.
Aquí hay un ejemplo del código CSS que usarías para centrar y rellenar una imagen con una relación de aspecto de 4:3:
.container {
position: relative;
width: 100%;
}
.container::after {
content: "";
display: block;
padding-bottom: 75%; /* relación de aspecto 4:3 */
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
img {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
max-width: 100%;
max-height: 100%;
}
En este ejemplo, el elemento .container es el contenedor para la imagen. El pseudo-elemento ::after se usa para crear el relleno y mantener la relación de aspecto de la imagen. El elemento img se establece en position: absolute para que pueda centrarse dentro del contenedor usando las propiedades top, left, bottom, y right.
Al establecer las propiedades max-width y max-height de la imagen al 100%, la imagen se escalará para ajustarse al espacio disponible mientras mantiene su relación de aspecto. Esto significa que el relleno creado por el pseudo-elemento ::after siempre será proporcional al tamaño de la imagen.