Ridimensionamento responsivo delle immagini: dimensioni originali per immagini piccole e larghezza massima per immagini grandi
Vorrei ottenere immagini che si ridimensionino in modo responsivo - per cui devo impostare 'width: 100%' - e allo stesso tempo impostare una larghezza massima per evitare che l'immagine sia larga quanto il contenuto
Per fare ciò uso:
img {
max-width: 100%;
height: auto;
width: 100%; /* per rendere l'immagine responsive */
}
#content img {
max-width: 690px;
}
L'immagine è responsiva - ma il problema è che nel caso in cui la larghezza dell'immagine sia inferiore a 690px, la larghezza dell'immagine risulta troppo grande!
Se uso solo questo:
img {
max-width: 100%;
height: auto;
}
Le dimensioni dell'immagine (larghezza e altezza) sono corrette, ma l'immagine non è responsiva.
Come posso ottenere tutti e tre questi risultati?
- Ridimensionamento responsivo dell'immagine
- Larghezza dell'immagine uguale a quella effettiva nel caso in cui la larghezza reale sia inferiore a 690px
- Larghezza dell'immagine di 690px per tutte le immagini più grandi
Questa è un'immagine la cui larghezza effettiva è inferiore a 690px e dove si può vedere il problema.
Ho trovato una specie di soluzione, ma poiché è più un workaround che una soluzione appropriata al problema specifico, la aggiungo qui.
Il workaround consiste nell'utilizzare un CSS diverso per finestre più piccole. Per finestre più grandi questo:
img {
max-width: 100%;
height: auto;
width: auto; /* L'immagine viene resa responsive più sotto per finestre più piccole (@ 800px) */
}
#content img {
max-width: 690px;
}
E poi per finestre più piccole:
@media only screen and (max-width: 890px) {
img {
width: 90%; /* per rendere l'immagine responsive */
}
}

Dal link che hai fornito, le proprietà CSS applicate a quell'immagine sono
#content img{ max-width:690px;}
img { width:100%;height:auto;}
Ecco perché le immagini più piccole si stanno allungando. Aggiorna la tua risposta con:
img {
max-width: 100%;
height: auto;
width: auto; /* per rendere l'immagine responsive */
}
#content { max-width:690px;}
controlla questo fiddle

Grazie per la tua risposta! Non è esattamente quello che ho menzionato come mia soluzione dove "le dimensioni dell'immagine sono corrette, ma l'immagine non è responsive"? Perché funziona per te ma non per me allora – c'è qualche altro aspetto del mio css che lo incasina..?

1) stai ottenendo le immagini come responsive, 2) quando l'immagine effettiva è maggiore di 690px si riduce a 690px. ma il tuo problema è che anche le immagini più piccole si allungano fino a 690px.. ho ragione?? correggimi se sbaglio..

Esattamente! Quando un'immagine è più piccola di 690px si allunga fino a 690px. (Come quella che ho linkato.) Non so come impedire alle immagini più piccole di allungarsi fino a 690px.

Sfortunatamente questo non funziona. Se imposti width: auto;
allora l'immagine non si ridimensiona più.

Il CSS
Aggiungi il seguente codice al tuo file CSS. Questo renderà le immagini scalabili in base alla dimensione dello schermo.
Ovviamente cambia il tag della classe se vuoi impostarlo solo per una specifica classe di immagini
img{ max-width: 100%; }
img{ -ms-interpolation-mode: bicubic; }
Poi devi eseguire un filtro per impedire a WordPress di aggiungere automaticamente le dimensioni delle immagini che vuoi rendere responsive.
function remove_wp_width_height($string){
return preg_replace('/\/i', '',$string);
}
Quando devi richiamare l'immagine in miniatura nel tuo template, invece di usare the_post_thumbnail();
usa la tua nuova funzione in questo modo
echo remove_wp_width_height(get_the_post_thumbnail(get_the_ID(),'large'));

Il modo più semplice è mantenere gli stili così come sono ora. Basta limitare il contenitore utilizzando pixel o percentuali.
Ad esempio: Se limiti il tuo contenitore alla dimensione dell'immagine - la tua immagine si allungherà fino a quel punto e non oltre.
Se la dimensione dell'immagine è di 200px - allora, vedi sotto per il set di stili finale.
#content {
max-width: 200px;
width: 100%;
}
img {
max-width: 100%;
height: auto;
width: 100%; /* per rendere l'immagine responsive */
}
Vedi per maggiori dettagli - Creare immagini responsive
Grazie!
Sumesh M.S

Beh, aggiungo il mio pezzo dicendo che sono un principiante di WordPress, e in particolare per il mio portfolio. Ho lo stesso problema con le immagini responsive, dove nel prototipo HTML/CSS le immagini, ad esempio per i lavori del portfolio, erano tipo "1000x650" e si ridimensionavano. Tuttavia, in WordPress questo non ha funzionato.
Quindi ho cercato su Google e ho scoperto che la soluzione proposta dall'utente originale ha effettivamente funzionato per me.
img {
max-width: 100%;
height: auto;
width: 100%; /* per rendere l'immagine responsive */
}
#content img {
max-width: 690px;
}
