Ridimensionamento responsivo delle immagini: dimensioni originali per immagini piccole e larghezza massima per immagini grandi

17 lug 2014, 13:30:54
Visualizzazioni: 33.4K
Voti: 0

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?

  1. Ridimensionamento responsivo dell'immagine
  2. Larghezza dell'immagine uguale a quella effettiva nel caso in cui la larghezza reale sia inferiore a 690px
  3. 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 */
    }
}
1
Commenti

.container { max-width: 900px; } img { max-width: 100%; min-width: 100%; width: auto; }

gmazzap gmazzap
17 lug 2014 15:15:18
Tutte le risposte alla domanda 4
6

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

17 lug 2014 13:34:55
Commenti

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..?

user2656065 user2656065
17 lug 2014 13:45:29

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..

Zammuuz Zammuuz
17 lug 2014 13:48:59

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.

user2656065 user2656065
17 lug 2014 13:55:22

ok..guarda la mia risposta aggiornata

Zammuuz Zammuuz
17 lug 2014 13:59:52

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

user2656065 user2656065
17 lug 2014 14:19:27

@user2656065: devi rimuovere quell'img da #content

Zammuuz Zammuuz
17 lug 2014 14:24:02
Mostra i restanti 1 commenti
1

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'));
18 lug 2014 15:03:21
Commenti

Alcuni dei commenti sotto l'articolo sembrano suggerire che se le immagini sono troppo piccole non verranno ridimensionate, quindi spero che questo risolva il tuo problema di mantenere le immagini più piccole senza allungamenti

Bysander Bysander
18 lug 2014 15:06:05
0

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

18 ago 2014 21:39:05
1

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;
}
12 gen 2015 23:30:26
Commenti

Hai visto (e provato) il commento di @G.M. sulla domanda originale?

kaiser kaiser
13 gen 2015 00:04:31