¿Las 3 a la vez?: Redimensionamiento responsive de imágenes + ancho de imagen real para imágenes pequeñas + ancho máximo para imágenes grandes
Lo que me gustaría lograr es tener imágenes que se redimensionen de forma responsive - y para eso tengo que establecer 'width: 100%' - y al mismo tiempo establecer un ancho máximo para que la imagen no sea tan ancha como el contenido
Para hacer eso uso:
img {
max-width: 100%;
height: auto;
width: 100%; /* para hacer la imagen responsive */
}
#content img {
max-width: 690px;
}
Entonces la imagen es responsive - ¡pero el problema es que en caso de que el ancho de la imagen sea menor a 690px el ancho de la imagen es demasiado grande!
Si solo uso esto:
img {
max-width: 100%;
height: auto;
}
El tamaño de la imagen (ancho y alto) es correcto, pero la imagen no es responsive.
¿Cómo logro las tres cosas?
- Redimensionamiento responsive del tamaño de la imagen
- Ancho de imagen del tamaño real en caso de que el ancho verdadero sea menor a 690px
- Ancho de imagen de 690px para todas las imágenes más grandes
Esta es una imagen cuyo ancho real es menor a 690px y donde se puede ver el problema.
Se me ocurrió una especie de solución, pero como es más un arreglo temporal que una solución adecuada al problema específico, la agrego aquí.
La solución alternativa es usar un CSS diferente para tamaños de ventana más pequeños. Para ventanas más grandes esto:
img {
max-width: 100%;
height: auto;
width: auto; /* La imagen se hace responsive más abajo para ventanas más pequeñas (@ 800px) */
}
#content img {
max-width: 690px;
}
Y luego para ventanas más pequeñas:
@media only screen and (max-width: 890px) {
img {
width: 90%; /* para hacer la imagen responsive */
}
}

Del enlace que proporcionaste, las propiedades CSS aplicadas a esa imagen son
#content img{ max-width:690px;}
img { width:100%;height:auto;}
Por eso las imágenes más pequeñas también se estiran. Actualiza tu respuesta como:
img {
max-width: 100%;
height: auto;
width: auto; /* para hacer la imagen responsiva */
}
#content { max-width:690px;}
Revisa este ejemplo

¡Gracias por tu respuesta! ¿No es esto exactamente lo que mencioné como mi solución donde "el tamaño de la imagen es correcto, pero la imagen no es responsiva"? ¿Por qué funciona para ti pero no para mí entonces? ¿Hay algún otro aspecto de mi CSS que lo estropee...?

1) estás obteniendo las imágenes como responsivas, 2) cuando la imagen real es mayor de 690px se reduce a 690px. Pero tu problema es que tus imágenes más pequeñas también se estiran hasta 690px... ¿estoy en lo cierto? Corrígeme si me equivoco.

¡Exactamente! Cuando una imagen es más pequeña que 690px, se estira hasta 690px (como la que enlacé). No sé cómo evitar que las imágenes más pequeñas se estiren hasta 690px.

Desafortunadamente esto no funciona. Si configuras width: auto;
entonces la imagen ya no cambia de tamaño.

El CSS
Añade el siguiente código a tu archivo CSS. Esto hará que las imágenes sean escalables según el tamaño de pantalla.
Obviamente cambia la etiqueta de clase si quieres configurarlo solo para una clase de imagen específica
img{ max-width: 100%; }
img{ -ms-interpolation-mode: bicubic; }
Luego necesitas ejecutar un filtro para evitar que WordPress añada automáticamente las dimensiones a las imágenes que quieres que sean responsivas.
function remove_wp_width_height($string){
return preg_replace('/\/i', '',$string);
}
Entonces cuando necesites llamar la miniatura, en tu plantilla en lugar de usar the_post_thumbnail();
usa tu nueva función así:
echo remove_wp_width_height(get_the_post_thumbnail(get_the_ID(),'large'));

La forma más sencilla es mantener tus estilos como están ahora. Solo limita tu contenedor usando píxeles o porcentaje.
Por ejemplo: Si limitas tu contenedor al tamaño de tu imagen, esta se estirará hasta ese límite y no más allá.
Si el tamaño de tu imagen es de 200px, entonces revisa abajo para tu conjunto de estilos final.
#content {
max-width: 200px;
width: 100%;
}
img {
max-width: 100%;
height: auto;
width: 100%; /* para hacer la imagen responsive */
}
Para más detalles, consulta - Creando imágenes responsivas
¡Gracias!
Sumesh M.S

Bueno, voy a añadir mi parte diciendo que soy un usuario principiante de WordPress, y particularmente para mi portafolio. Tengo el mismo problema con las imágenes responsivas, donde en el prototipo HTML/CSS las imágenes, por ejemplo de una pieza del portafolio, eran como "1000x650" y se escalaban. Sin embargo, en WordPress eso no funcionó.
Así que busqué en Google y encontré que la solución del autor original de este problema en realidad funcionó para mí.
img {
max-width: 100%;
height: auto;
width: 100%; /* para hacer la imagen responsive */
}
#content img {
max-width: 690px;
}
