Immagini

Le immagini decorative, come le sfumature di sfondo sui pulsanti o le immagini di sfondo sulle sezioni di contenuti o sull'intera pagina, sono di presentazione e devono essere applicate con CSS. Quando un'immagine aggiunge contesto a un documento, si tratta di contenuti e deve essere incorporata con HTML.

Il metodo principale per includere le immagini è il tag <img> con l'attributo src che fa riferimento a una risorsa immagine e l'attributo alt che descrive l'immagine.

<img src="images/eve.png" alt="Eve">

Sia l'attributo srcset su <img> sia l'elemento <picture> forniscono un modo per includere più origini immagine con query multimediali associate, ciascuna con un'origine immagine di riserva, consentendo di pubblicare il file immagine più appropriato in base alla risoluzione del dispositivo, alle funzionalità del browser e alle dimensioni del riquadro visibile. L'attributo srcset consente di fornire più versioni dell'immagine in base alla risoluzione e, insieme all'attributo sizes, alle dimensioni della finestra del browser.

<img src="images/eve.png" alt="Eve"
  srcset="images/eve.png 400w, images/eve-xl.jpg 800w"
  sizes="(max-width: 800px) 400px, 800px" />

Questa operazione può essere eseguita anche con l'elemento <picture>, insieme agli elementi secondari <source>, che utilizza <img> come origine predefinita.

<picture>
  <source src="images/eve.png" media="(max-width: 800px)" />
  <source src="images/eve-xl.jpg" />
  <img src="images/eve.png" alt="Eve" />
</picture>

Oltre a questi metodi di immagini reattive HTML integrati, l'HTML consente anche di migliorare il rendimento del rendering delle immagini tramite vari attributi. Il tag <img> e, di conseguenza, i pulsanti di invio grafici <input type="image">, possono includere gli attributi height e width per impostare le proporzioni dell'immagine in modo da ridurre lo spostamento del layout dei contenuti. L'attributo lazy consente il caricamento lento.

HTML supporta anche l'inclusione di immagini SVG utilizzando direttamente il tag <svg>, anche se le immagini SVG con estensione .svg (o come data-uri) possono essere incorporate utilizzando l'elemento <img>.

Come minimo, ogni immagine in primo piano deve includere gli attributi src e alt.

Il file src è il percorso e il nome file dell'immagine incorporata. L'attributo src viene utilizzato per fornire l'URL dell'immagine. Il browser recupera l'asset e lo esegue il rendering nella pagina. Questo attributo è richiesto da <img>. Senza, non c'è nulla da eseguire il rendering.

L'attributo alt fornisce un testo alternativo per l'immagine, fornendo una descrizione dell'immagine per chi non riesce a vedere lo schermo (motori di ricerca e tecnologie assistive, nonché Alexa, Siri e l'Assistente Google) e può essere visualizzato dal browser se l'immagine non viene caricata. Oltre agli utenti con reti lente o larghezza di banda limitata, il testo alt è incredibilmente utile nelle email HTML, in quanto molti utenti bloccano le immagini nelle proprie applicazioni di posta.

<img src="path/filename" alt="descriptive text" />

Se l'immagine è di tipo SVG, includi anche role="img", necessario a causa di VoiceOver .

<img src="switch.svg" alt="light switch" role="img" />

Scrivere descrizioni efficaci delle immagini alt

Gli attributi alt devono essere brevi e concisi e fornire tutte le informazioni pertinenti che l'immagine trasmette, omettendo le informazioni ridondanti rispetto ad altri contenuti del documento o che non sono utili. Nella stesura del testo, il tono deve riflettere quello del sito.

Per scrivere un testo alternativo efficace, immagina di leggere l'intera pagina a una persona che non può vederla. Utilizzando l'elemento semantico <img>, gli utenti di screen reader e i bot vengono informati che l'elemento è un'immagine. È ridondante includere "Questa è un'immagine/uno screenshot/una foto di" in alt. L'utente non deve sapere che c'è un'immagine, ma deve sapere quali informazioni trasmette l'immagine.

Normalmente, non diresti: "Questa è un'immagine granulosa di un cane che indossa un cappello rosso". ma dovresti descrivere il messaggio dell'immagine in relazione al contesto del resto del documento. Ciò che trasmetti cambia a seconda del contesto e del contenuto del testo circostante.

Ad esempio, la foto di un cane viene descritta in modi diversi a seconda del contesto. Se Fluffy è un avatar accanto a una recensione del cibo per cani Yuckymeat, alt="Fluffy" è sufficiente.

Se la foto fa parte della pagina di adozione di Fuffy sul sito web di un rifugio per animali, il pubblico di destinazione è il futuro padrone del cane. Il testo deve descrivere le informazioni trasmesse nell'immagine che sono pertinenti per un utente che adotta la tecnologia assistiva e che non sono duplicate nel testo circostante. Una descrizione più lunga, ad esempio alt="Fluffy, a tri-color terrier with very short hair, with a tennis ball in her mouth" è appropriata. Il testo di una pagina di adozione in genere include la specie, la razza, l'età e il sesso dell'animale domestico adottabile, pertanto non è necessario ripeterli nel testo alternativo. Ma la biografia scritta del cane probabilmente non include la lunghezza del pelo, i colori o le preferenze per i giocattoli.

È importante sottolineare che non abbiamo descritto l'immagine per intero. Il futuro proprietario del cane non ha bisogno di sapere se il cane si trova in casa o fuori, o che ha un collare rosso e un guinzaglio blu.

Quando utilizzi le immagini per l'iconografia, poiché l'attributo alt fornisce il nome accessibile, trasmetti il significato dell'icona, non una descrizione dell'immagine. Ad esempio, l'attributo alt dell'icona della lente d'ingrandimento è search. L'icona a forma di casa ha home come testo alternativo. La descrizione dell'icona del floppy disk da 5 pollici è save. Se vengono utilizzate due icone di Fluffy per indicare best practice e anti-pattern, il cane sorridente con un basco verde potrebbe avere alt="good" impostato, mentre il cane ringhioso con un basco rosso potrebbe leggere alt="bad". Detto questo, utilizza solo icone standard e, se utilizzi icone non standard come Fluffy buono e cattivo, includi una legenda e assicurati che le icone non siano l'unico modo per decifrare il significato degli elementi della UI.

Se l'immagine è uno screenshot o un grafico, scrivi cosa si apprende dall'immagine anziché descriverne l'aspetto. Anche se un'immagine può valere mille parole, la descrizione deve trasmettere in modo conciso tutto ciò che viene appreso.

Ometti le informazioni che l'utente già conosce dal contesto e di cui è altrimenti informato nei contenuti. Ad esempio, se ti trovi in una pagina di tutorial su come modificare le impostazioni del browser e la pagina riguarda il clic sulle icone nel browser Chrome, l'URL della pagina nella schermata non è importante. Limita l'alt all'argomento in questione: come modificare le impostazioni.

Il alt potrebbe essere "L'icona delle impostazioni si trova nella barra di navigazione sotto il campo di ricerca". Non includere "screenshot" o "machinelearningworkshop" perché l'utente non deve sapere che si tratta di uno screenshot e non deve sapere dove navigava il tecnico della documentazione quando ha scritto le istruzioni. La descrizione dell'immagine si basa sul contesto del motivo per cui l'immagine è stata inclusa.

Se l'acquisizione dello schermo mostra come trovare il numero di versione del browser andando su chrome://version/, includi l'URL nel contenuto della pagina come istruzioni e fornisci una stringa vuota come attributo ALT, in quanto l'immagine non fornisce informazioni che non siano nel testo circostante.

Se l'immagine non fornisce informazioni aggiuntive o è puramente decorativa, l'attributo deve comunque essere presente, anche se come stringa vuota.

<img src="svg/magazine.svg" alt="" role="none" />

MachineLearningWorkshop.com ha sette immagini in primo piano, quindi sette immagini con attributi alt: un interruttore della luce a forma di uovo di Pasqua, un'icona manuale, due foto biografiche di Hal ed Eve e tre avatar di un frullatore, un aspirapolvere e un tostapane. L'immagine in primo piano che sembra una rivista è l'unica puramente decorativa. La pagina ha anche due immagini di sfondo. Queste immagini sono decorative e sono state aggiunte con CSS, pertanto non sono accessibili.

La rivista, essendo puramente decorativa, ha un attributo alt vuoto e un role di none poiché l'immagine è un SVG puramente di presentazione. Se significative, le immagini SVG devono includere role="img".

<img src="svg/magazine.svg" alt="" role="none" />

Nella parte inferiore della pagina sono presenti tre recensioni, ognuna con un'immagine del poster. Di solito, il testo alt è il nome della persona nella foto.

<img src="images/blender.svg" alt="Blendan Smooth" role="img" />

Poiché si tratta di una pagina di scherzi, devi comunicare ciò che potrebbe non essere evidente agli utenti con problemi di vista, in modo che non perdano l'umorismo. Utilizziamo la funzione originale della macchina come alt anziché il nome del personaggio:

<img src="images/blender.svg" alt="blender" role="img" />

Le foto degli istruttori non sono semplici avatar: sono immagini biografiche e quindi ricevono una descrizione più dettagliata.

Se questo fosse un sito reale, forniresti la descrizione minima dell'aspetto dell'insegnante, in modo che un potenziale studente possa riconoscerlo quando entra in classe.

<img src="svg/hal.svg" role="img"
  alt="Hal 9000; a camera lens containing a red dot that sometimes changes to yellow." />

Poiché si tratta di un sito di barzellette, fornisci le informazioni pertinenti nel contesto della barzelletta:

<img src="svg/hal.svg" role="img"
  alt="Hal 9000, the sentient AI computer from 2001: a Space Odyssey depicted as a camera lens with a red dot that changes to yellow when hovered." />

Se stessi leggendo la pagina a un amico al telefono, non gli importerebbe l'aspetto del punto rosso. In questo caso, la storia del riferimento al film è importante.

Quando scrivi un testo descrittivo, considera quali informazioni trasmette l'immagine che sono importanti e pertinenti per l'utente e includile. Ricorda che il contenuto dell'attributo alt per un'immagine varia in base al contesto. Tutte le informazioni trasmesse in un'immagine a cui un utente vedente può accedere e che sono pertinenti al contesto sono ciò che deve essere trasmesso; nient'altro. Mantienila breve, precisa e utile.

Gli attributi src e alt sono requisiti minimi per le immagini incorporate. Ci sono altri attributi di cui dobbiamo parlare.

Immagini adattabili

Esistono una miriade di dimensioni dell'area visibile e risoluzioni dello schermo. Non vuoi sprecare la larghezza di banda di un utente mobile pubblicando un'immagine abbastanza ampia per un monitor di grandi dimensioni, ma potresti voler pubblicare immagini a risoluzione più elevata per dispositivi minuscoli che hanno una risoluzione dello schermo quattro volte superiore al normale. Esistono diversi modi per pubblicare immagini diverse in base alle dimensioni dell'area visibile e alla risoluzione dello schermo.

<img> srcset attributo

L'attributo srcset consente di suggerire più file immagine, con il browser che seleziona l'immagine da richiedere in base a più query supporti, tra cui le dimensioni dell'area visibile e la risoluzione dello schermo.

Può esserci un solo attributo srcset per elemento <img>, ma questo srcset può collegarsi a più immagini. L'attributo srcset accetta un elenco di valori separati da virgole, ognuno contenente l'URL dell'asset seguito da uno spazio e poi dai descrittori per l'opzione di immagine. Se viene utilizzato un descrittore di larghezza, devi includere anche l'attributo sizes con una query multimediale o una dimensione dell'origine per ogni opzione srcset diversa dall'ultima. Le sezioni Learn che trattano le immagini adattabili con srcset e le sintassi descrittive meritano di essere lette.

L'immagine srcset ha la precedenza sull'immagine src se c'è una corrispondenza.

<picture> e <source>

Un altro metodo per fornire più risorse e consentire al browser di eseguire il rendering dell'asset più appropriato è l'elemento <picture>. L'elemento <picture> è un contenitore per più opzioni di immagine elencate in un numero illimitato di elementi <source> e un singolo elemento <img> obbligatorio.

Gli attributi <source> includono srcset, sizes, media, width e height. L'attributo srcset è comune a img, source e link, ma in genere viene implementato in modo leggermente diverso nella sorgente, in quanto le media query possono essere elencate nell'attributo media di <srcset>. <source> supporta anche i formati immagine definiti nell'attributo type.

Il browser prende in considerazione ogni elemento secondario <source> e sceglie la corrispondenza migliore tra questi. Se non vengono trovate corrispondenze, viene selezionato l'URL dell'attributo src dell'elemento <img>. Il nome accessibile deriva dall'attributo alt dell'elemento <img> nidificato. Ti consigliamo di leggere anche le sezioni Learn che trattano l'elemento <picture> e le sintassi prescrittive.

Funzionalità aggiuntive per le prestazioni

Esistono diverse funzionalità aggiuntive per le immagini che possono migliorare le prestazioni del tuo sito.

Caricamento lento

L'attributo loading indica al browser abilitato per JavaScript come caricare l'immagine. Il valore predefinito eager indica che l'immagine viene caricata immediatamente durante l'analisi dell'HTML, anche se l'immagine si trova al di fuori dell'area visibile. Impostando loading="lazy" il caricamento dell'immagine viene posticipato fino a quando non è probabile che entri nell'area visibile. "Probabile" è definito dal browser in base alla distanza dell'immagine dalla finestra. Questo valore viene aggiornato man mano che l'utente scorrono. Il caricamento lento consente di risparmiare larghezza di banda e CPU, migliorando le prestazioni per la maggior parte degli utenti. Se JavaScript è disattivato, per motivi di sicurezza, tutte le immagini vengono impostate su eager per impostazione predefinita.

<img src="switch.svg" alt="light switch" loading="lazy" />

Proporzioni

I browser iniziano il rendering dell'HTML quando lo ricevono, effettuando richieste di asset quando vengono rilevati. Ciò significa che il browser sta già eseguendo il rendering dell'HTML quando incontra il tag <img> ed effettua la richiesta. E il caricamento delle immagini potrebbe richiedere un po' di tempo. Per impostazione predefinita, i browser non riservano spazio per le immagini diverse dalle dimensioni richieste per il rendering del testo alt.

L'elemento <img> ha sempre supportato gli attributi height e width senza unità. Queste proprietà sono state abbandonate a favore di CSS. Il CSS può definire le dimensioni dell'immagine, spesso impostando una singola dimensione come max-width: 100%; per assicurarsi che le proporzioni vengano mantenute.

Poiché il CSS è in genere incluso in <head>, viene analizzato prima di qualsiasi <img>. Tuttavia, senza elencare esplicitamente height o le proporzioni, lo spazio riservato è l'altezza (o la larghezza) del testo alt.

Quando gli sviluppatori dichiarano solo una larghezza, la ricezione e il rendering delle immagini comportano uno spostamento cumulativo del layout che danneggia le Vitals web. Per risolvere il problema, i browser supportano le proporzioni delle immagini. L'inclusione degli attributi height e width nel <img> funge da suggerimenti per il dimensionamento, comunicando al browser le proporzioni, in modo che venga riservato lo spazio giusto per il rendering finale dell'immagine. Quando il browser rileva una singola dimensione, come nel nostro esempio del 50%, riserva spazio per l'immagine rispettando la dimensione CSS e mantenendo le proporzioni tra larghezza e altezza.

<img src="switch.svg" alt="light switch" role="img" width="70" height="112" />

Le immagini sono adattabili se il CSS è stato configurato correttamente per renderle adattabili. Sì, i valori height e width senza unità inclusi vengono sovrascritti con CSS. Lo scopo dell'inclusione di questi attributi è quello di riservare lo spazio con le giuste proporzioni, migliorando il rendimento riducendo lo spostamento del layout. La pagina impiegherà comunque circa lo stesso tempo per caricarsi, ma l'interfaccia utente non salterà quando l'immagine viene visualizzata sullo schermo.

Altre funzionalità delle immagini

L'elemento <img> supporta anche gli attributi crossorigin, decoding, referrerpolicy e, nei browser basati su Blink, fetchpriority. Utilizzato raramente, se l'immagine fa parte di una mappa lato server, includi l'attributo booleano ismap e nidifica <img> in un link per gli utenti senza dispositivi di puntamento.

L'attributo ismap non è necessario o addirittura supportato su <input type="image" name="imageSubmitName">, poiché le coordinate x e y della posizione del clic vengono inviate durante l'invio del modulo, aggiungendo i valori al nome dell'input, se presente. Ad esempio, un valore come &imageSubmitName.x=169&imageSubmitName.y=66 viene inviato con il modulo quando l'utente fa clic sull'immagine, inviandola. Se l'immagine non ha un attributo name, vengono inviati x e y: &x=169&y=66.

Verifica la tua comprensione

Metti alla prova le tue conoscenze sulle immagini.

Quali due attributi deve sempre avere un'immagine in primo piano?

size
Riprova.
alt
Esatto!
src
Esatto!