2015-02-21 25 views
23

Ho cercato di attuare il nuovo approccio srcset alle immagini sensibili, utilizzando il seguente codice HTMLimmagini responsive srcset Non funziona

 <img class="swapImages" 
     srcset="assets/images/content/large.jpg 1200w, 
       assets/images/content/medium.jpg 800w, 
       assets/images/content/small.jpg 400w" 
     sizes="100vw" 
     src="assets/images/content/small.jpg" 
     alt="responsive image"> 

Im usando Chrome 40 e tutto quello che ottiene è l'immagine più grande, ridimensionando il mio browser , cancellare la cache non fa nulla.

Ho letto da qualche parte ho dovuto polyfill, così ho usato il plugin picturefill, anche se Chrome dovrebbe supportarlo ..... ancora non funziona.

ho messo insieme una pagina di prova per esso: http://www.darrencousins.com/lab/resp-img-srcset/

Che cosa sto facendo di sbagliato/non ottenere?

Qualsiasi aiuto è enormemente apprezzato.

+1

http://stackoverflow.com/questions/28365079/do-latest-chrome-opera-get -srcset-wrong –

risposta

39

Avete corretto.

Il fatto è che, una volta che il browser ha l'immagine a risoluzione più alta (caricata, nella cache), non ha senso scaricarne uno di qualità inferiore, anche quando riduci la finestra (il punto è salvare il traffico).

Quindi, se si desidera testare questo, basta ridurre la finestra e poi caricare la pagina (dopo aver svuotato la cache/o utilizzare la modalità di navigazione in incognito). Otterrai la versione per cellulari o tablet. Quindi, ingrandendo la finestra, a un certo punto vedrai il tuo browser passare alla risoluzione più alta.

+3

Questo non funziona per me, anche se sto svuotando la cache! :/ – Ciwan

+1

Prova la modalità di navigazione in incognito di Chrome per essere sicuro (se stavi già provando con esso, chiudi tutte le finestre/schede e ricomincia). Per prima cosa riduci la finestra, POI carichi la pagina, l'ordine è vitale. Dovrebbe funzionare, magari provare a fornire informazioni sul tuo browser. – TondaCZE

+0

Il caching potrebbe essere qualcosa a cui prestare attenzione ma non è certamente il problema a portata di mano. Il codice dell'OP carica ancora l'immagine 800w nei browser mobili <800px e schermi in incognito a 320px – BenRacicot

15

Quando utilizzato in un tag img, l'attributo srcset lascia le decisioni al browser in termini di quale immagine caricare come indicato da TondaCZE. Se si desidera forzare i browser a caricare immagini in finestre specificate, si desidera utilizzare l'elemento picture.

<picture> 
    <source srcset="large.jpg" media="(min-width: 1200px)" /> 
    <source srcset="medium.jpg" media="(min-width: 800px)" /> 
    <img src="small.jpg" /> 
</picture> 
+9

Sei corretto. Solo la correzione è che il tag immagine predefinito deve avere "" anziché "". – WayBehind

2

Ho appena notato che la pagina demo (http://www.darrencousins.com/lab/resp-img-srcset/) non è mai stato visualizzando la versione mobile (anche se il ridimensionamento del browser o utilizzando le DevTools - Device mode) su Google Chrome (versione 48).

La modifica del rapporto pixel del dispositivo su 1 sembra caricare l'immagine corretta.

enter image description here

enter image description here

Io non so perché, mi chiedo se i descrittori w prendono il rapporto di pixel del dispositivo in considerazione

+0

Durante i test, ricorda i punti menzionati in questo articolo: http://nilesh2git.com/Blog/2017/06/10/responsive-image-lessons/#comments –

4

Credo che si sta testando il browser Chrome, e la solo il motivo per cui non funziona lì è perché è una caratteristica di cromo. Vedi sotto dello stack filo troppo pieno (che vale per la versione più recente di Chrome V54 pure):

Google Chrome version 40 srcset attribute problems

controllato il vostro pagina su IE8 e Firefoxv49 e le cose funzionano come un fascino!

L'altra cosa che ho osservato è che sebbene Chrome non scarichi altre immagini, ridimensiona quella scaricata abbastanza bene.Quindi, in un certo senso siamo ancora in una condizione molto migliore se fosse stato solo questo a pagina:

<img srcset="assets/images/content/large.jpg 1200w" alt="large image">