Ottimizza i caroselli per migliorare il rendimento e l'usabilità.
Un carosello è un componente UX che mostra i contenuti in modo simile a una presentazione. I caroselli possono essere riprodotti automaticamente o essere esplorati manualmente dagli utenti. Sebbene i caroselli possono essere utilizzati altrove, vengono utilizzati più spesso per mostrare immagini, prodotti e promozioni sulle home page.
Questo articolo illustra le best practice sulle prestazioni e sull'esperienza utente per i caroselli.
Prestazioni
Un carosello ben implementato di per sé dovrebbe avere un impatto minimo o nullo sulle prestazioni. Tuttavia, i caroselli spesso contengono asset multimediali di grandi dimensioni. Asset di grandi dimensioni possono influire sul rendimento indipendentemente dal fatto che vengano visualizzati in un carosello o altrove.
LCP (Largest Contentful Paint)
Le gallerie grandi sopra la piega spesso contengono l'elemento LCP della pagina e quindi possono avere un impatto significativo su LCP. In questi scenari, l'ottimizzazione del carosello può migliorare notevolmente il valore LCP. Per una spiegazione approfondita del funzionamento della misurazione LCP nelle pagine contenenti caroselli, consulta la sezione Misurazione LCP per i caroselli.
INP (Interaction to Next Paint)
I caroselli hanno requisiti JavaScript minimi e pertanto non dovrebbero influire sulla reattività della pagina. Se scopri che il carosello del tuo sito ha script che richiedono molto tempo, ti consigliamo di sostituire gli strumenti del carosello.
CLS (Cumulative Layout Shift)
Un numero sorprendente di caroselli utilizza animazioni non composite e tremolanti che possono contribuire al CLS. Sulle pagine con caroselli a riproduzione automatica, questo potrebbe causare una CLS infinita. Questo tipo di CLS in genere non è visibile all'occhio umano, il che rende il problema facile da trascurare. Per evitare questo problema, non utilizzare animazioni non composite nel carosello (ad esempio durante le transizioni tra le diapositive).
Best practice per le prestazioni
Caricare i contenuti del carosello utilizzando HTML
I contenuti del carosello devono essere caricati tramite il markup HTML della pagina in modo che siano rilevabili dal browser all'inizio del processo di caricamento della pagina. L'utilizzo di JavaScript per avviare il caricamento dei contenuti dei caroselli è probabilmente l'errore più grave che può influire sul rendimento dei caroselli. Ciò ritarda il caricamento delle immagini e può influire negativamente su LCP.
<div class="slides"> <img src="https://example.com/cat1.jpg"> <img src="https://example.com/cat2.jpg"> <img src="https://example.com/cat3.jpg"> </div>
const slides = document.querySelector(".slides"); const newSlide = document.createElement("img"); newSlide.src = "htttp://example.com/cat1.jpg"; slides.appendChild(newSlide);
Per un'ottimizzazione avanzata del carosello, valuta la possibilità di caricare la prima slide in modo statico, per poi migliorarla progressivamente per includere controlli di navigazione e contenuti aggiuntivi. Questa tecnica è più adatta agli ambienti in cui hai l'attenzione prolungata di un utente, in modo da dare il tempo di caricare i contenuti aggiuntivi. In ambienti come le home page, in cui gli utenti potrebbero rimanere solo per un paio di secondi, il caricamento di una sola immagine potrebbe essere altrettanto efficace.
Evita variazioni di layout
Le transizioni tra le diapositive e i controlli di navigazione sono le due cause più comuni di variazioni del layout nei caroselli:
Transizioni tra le diapositive:le variazioni del layout che si verificano durante le transizioni tra le diapositive sono solitamente causate dall'aggiornamento delle proprietà che determinano il layout degli elementi DOM. Ecco alcuni esempi di queste proprietà:
left
,top
,width
emarginTop
. Per evitare variazioni del layout, utilizza la proprietà CSStransform
per eseguire la transizione di questi elementi. Questa demo mostra come utilizzaretransform
per creare un carosello di base.Controlli di navigazione:spostare o aggiungere/rimuovere i controlli di navigazione del carosello dal DOM può causare variazioni del layout a seconda di come vengono implementate queste modifiche. I caroselli che presentano questo comportamento lo fanno in genere in risposta al passaggio del mouse dell'utente.
Di seguito sono riportati alcuni dei punti di confusione comuni relativi alla misurazione del CLS per i caroselli:
Caroselli con riproduzione automatica: le transizioni delle slide sono la fonte più comune di variazioni del layout legate al carosello. In un carosello senza riproduzione automatica, queste variazioni di layout si verificano tipicamente entro 500 ms da un'interazione dell'utente e di conseguenza non vengono conteggiate ai fini del calcolo della metrica CLS (Cumulative Layout Shift). Tuttavia, per i caroselli con riproduzione automatica, non solo questi cambiamenti di layout possono potenzialmente essere conteggiati ai fini del CLS, ma possono anche ripetersi all'infinito. Pertanto, è particolarmente importante verificare che un carosello con riproduzione automatica non sia fonte di cambiamenti di layout.
Scorrimento: alcuni caroselli consentono agli utenti di utilizzare lo scorrimento per passare da una diapositiva all'altra. Se la posizione iniziale di un elemento cambia, ma l'offset di scorrimento (ovvero
scrollLeft
oscrollTop
) varia della stessa quantità (ma nella direzione opposta), non si tratta di un spostamento del layout, a condizione che si verifichi nello stesso frame.
Per maggiori informazioni sulle variazioni del layout, consulta Debug delle variazioni del layout.
Utilizza una tecnologia moderna
Molti siti utilizzano librerie JavaScript di terze parti per implementare i caroselli. Se al momento utilizzi strumenti per i caroselli meno recenti, potresti essere in grado di migliorare le prestazioni passando a strumenti più recenti. Gli strumenti più recenti tendono a utilizzare API più efficienti e hanno meno probabilità di richiedere dipendenze aggiuntive come jQuery.
Tuttavia, a seconda del tipo di carosello che stai creando, potresti non aver bisogno di JavaScript. La nuova API Scroll Snap consente di implementare transizioni simili a quelle dei caroselli utilizzando solo HTML e CSS.
Ecco alcune risorse sull'utilizzo di scroll-snap
che potrebbero esserti utili:
- Creare un componente di Storie (web.dev)
- Stili web di nuova generazione: snap scorrevole (web.dev)
- Carousel solo CSS (CSS Tricks)
- Come creare un carosello solo CSS (CSS Tricks)
Ottimizzare i contenuti del carosello
I caroselli spesso contengono alcune delle immagini più grandi di un sito, quindi può valere la pena assicurarti che queste immagini siano completamente ottimizzate. Scegliere il formato e il livello di compressione delle immagini giusti, utilizzare una CDN per le immagini e utilizzare srcset per pubblicare più versioni delle immagini sono tutte tecniche che possono ridurre le dimensioni di trasferimento delle immagini.
Misurazione del rendimento
Questa sezione illustra la misurazione LCP in relazione ai caroselli. Sebbene i caroselli non vengano trattati in modo diverso rispetto a qualsiasi altro elemento dell'esperienza utente durante il calcolo del tempo di caricamento della pagina più lungo, la procedura di calcolo del tempo di caricamento della pagina più lungo per i caroselli con riproduzione automatica è spesso fonte di confusione.
Misurazione LCP per i caroselli
Di seguito sono riportati i punti chiave per comprendere il funzionamento del calcolo dell'LCP per i caroselli:
- LCP prende in considerazione gli elementi della pagina man mano che vengono visualizzati nel frame. I nuovi candidati per l'elemento LCP non vengono più presi in considerazione quando l'utente interagisce con la pagina (tocchi, scorrimenti o pressioni dei tasti). Pertanto, qualsiasi diapositiva di un carosello con riproduzione automatica ha il potenziale per essere l'elemento LCP finale, mentre in un carosello statico solo la prima diapositiva sarebbe un potenziale candidato LCP.
- Se vengono visualizzate due immagini di dimensioni uguali, la prima immagine verrà considerata l'elemento LCP. L'elemento LCP viene aggiornato solo quando l'elemento LCP candidato è più grande dell'elemento LCP corrente. Pertanto, se tutti gli elementi del carosello hanno le stesse dimensioni, l'elemento LCP dovrebbe essere la prima immagine visualizzata.
- Durante la valutazione dei candidati LCP, LCP prende in considerazione la "dimensione visibile o la dimensione intrinseca, a seconda del valore più piccolo". Pertanto, se un carosello con riproduzione automatica mostra immagini con dimensioni coerenti, ma contiene immagini di dimensioni intrinseche diverse inferiori alle dimensioni di visualizzazione, l'elemento LCP potrebbe cambiare man mano che vengono visualizzate nuove diapositive. In questo caso, se tutte le immagini vengono visualizzate con le stesse dimensioni, l'immagine con le dimensioni intrinseche più grandi verrà considerata come elemento LCP. Per mantenere basso il valore LCP, devi assicurarti che tutti gli elementi di un carosello con riproduzione automatica abbiano le stesse dimensioni intrinseche.
Modifiche al calcolo dell'LCP per i caroselli in Chrome 88
A partire da Chrome 88, le immagini che vengono successivamente rimosse dal DOM sono considerate potenziali elementi più grandi con contenuti. Prima di Chrome 88, queste immagini erano escluse dalla considerazione. Per i siti che utilizzano caroselli con riproduzione automatica, questa modifica della definizione avrà un impatto neutro o positivo sui punteggi LCP.
Questa modifica è stata apportata in seguito all'osservazione che molti siti implementano le transizioni del carosello rimuovendo l'immagine visualizzata in precedenza dall'albero DOM. Prima di Chrome 88, ogni volta che veniva presentata una nuova diapositiva, la rimozione dell'elemento precedente attivava un aggiornamento dell'LCP. Questa modifica interessa solo i caroselli con riproduzione automatica. Per definizione, le potenziali letture più grandi con contenuti possono verificarsi solo prima che un utente interagisca per la prima volta con la pagina.
Modifiche alle soglie in Chrome 121
Chrome 121 ha modificato il comportamento delle immagini con scorrimento orizzontale, come i caroselli. Ora utilizzano le stesse soglie dello scorrimento verticale. Ciò significa che, per il caso d'uso del carosello, le immagini verranno caricate prima di essere visibili nel viewport. Ciò significa che il caricamento delle immagini è meno probabile che venga notato dall'utente, ma a costo di un aumento dei download. Utilizza la demo del caricamento lento orizzontale per confrontare il comportamento in Chrome con quello in Safari e Firefox.
Altre considerazioni
Questa sezione illustra le best practice per l'esperienza utente e i prodotti da tenere presenti prilikom implementacije karusela. I caroselli devono promuovere i tuoi obiettivi commerciali e presentare i contenuti in modo che siano facili da navigare e leggere.
Best practice per la navigazione
Fornire controlli di navigazione ben visibili
I controlli di navigazione del carosello devono essere facili da fare clic e molto visibili. Si tratta di un aspetto raramente realizzato correttamente: la maggior parte dei caroselli ha controlli di navigazione piccoli e poco evidenti. Tieni presente che un solo colore o stile del controllo di navigazione è raro funzionare in tutte le situazioni. Ad esempio, una freccia ben visibile su uno sfondo scuro potrebbe essere difficile da vedere su uno sfondo chiaro.
Indicare l'avanzamento della navigazione
I controlli di navigazione del carosello devono fornire il contesto relativo al numero totale di diapositive e all'avanzamento dell'utente. Queste informazioni consentono all'utente di passare più facilmente a una determinata slide e capire quali contenuti sono già stati visualizzati. In alcuni casi, fornire un'anteprima dei contenuti imminenti, che si tratti di un estratto della diapositiva successiva o di un elenco di miniature, può essere utile e aumentare il coinvolgimento.
Supporta i gesti da dispositivo mobile
Sui dispositivi mobili, oltre ai controlli di navigazione tradizionali (ad esempio i pulsanti sullo schermo), devono essere supportati i gesti di scorrimento.
Fornire percorsi di navigazione alternativi
Poiché è improbabile che la maggior parte degli utenti interagisca con tutti i contenuti del carosello, i contenuti a cui rimandano le diapositive del carosello devono essere accessibili da altri percorsi di navigazione.
Best practice per la leggibilità
Non utilizzare la riproduzione automatica
L'uso della riproduzione automatica crea due problemi quasi paradossali: le animazioni sullo schermo tendono a distrarre gli utenti e allontanano lo sguardo dai contenuti più importanti; allo stesso tempo, poiché gli utenti associano spesso animazioni agli annunci, ignorano i caroselli riprodotti automaticamente.
Pertanto, è raro che la riproduzione automatica sia una buona scelta. Se i contenuti sono importanti, la mancata attivazione della riproduzione automatica ne massimizza l'esposizione. Se i contenuti del carosello non sono importanti, l'uso della riproduzione automatica distoglie l'attenzione dai contenuti più importanti. Inoltre, i caroselli con riproduzione automatica possono essere difficili da leggere (e anche fastidiosi). Le persone leggono a velocità diverse, quindi è raro che un carosello effettui transizioni in modo coerente al momento "giusto" per utenti diversi.
Idealmente, la navigazione nelle slide dovrebbe essere guidata dall'utente tramite i controlli di navigazione. Se devi utilizzare la riproduzione automatica, questa deve essere disattivata quando l'utente passa il mouse sopra il video. Inoltre, la frequenza di transizione delle slide deve tenere conto dei contenuti delle slide: maggiore è il testo che contiene, più la slide deve essere visualizzata sullo schermo.
Mantieni separati testo e immagini
I contenuti di testo del carosello vengono spesso "incorporati" nel file immagine corrispondente, anziché essere visualizzati separatamente utilizzando il markup HTML. Questo approccio è negativo per l'accessibilità, la localizzazione e i tassi di compressione. Inoltre, incoraggia un approccio universale alla creazione degli asset. Tuttavia, la stessa formattazione di immagine e testo raramente consente una leggibilità uguale per tutti i formati desktop e per dispositivi mobili.
Essere conciso
Hai solo una frazione di secondo per attirare l'attenzione di un utente. Un testo breve e conciso aumenterà le probabilità che il tuo messaggio venga compreso.
Best practice per i prodotti
I caroselli sono utili in situazioni in cui non è possibile utilizzare spazio verticale aggiuntivo per visualizzare contenuti aggiuntivi. I caroselli nelle pagine dei prodotti sono spesso un buon esempio di questo caso d'uso.
Tuttavia, i caroselli non vengono sempre utilizzati in modo efficace.
- I caroselli, in particolare se contengono promozioni o vengono avviati automaticamente, vengono facilmente erronei per la pubblicità degli utenti. Gli utenti tendono a ignorare gli annunci, un fenomeno noto come cecità ai banner.
- I caroselli vengono spesso utilizzati per accontentare più reparti ed evitare di prendere decisioni sulle priorità aziendali. Di conseguenza, i caroselli possono facilmente diventare un ricettacolo di contenuti inefficaci.
Verificare le ipotesi
L'impatto commerciale dei caroselli, in particolare di quelli sulle home page, deve essere valutato e testato. Il tasso di clic dei caroselli può aiutarti a determinare se un carosello e i relativi contenuti sono efficaci.
Pertinenza
I caroselli funzionano al meglio quando contengono contenuti interessanti e pertinenti presentati in un contesto chiaro. Se i contenuti non coinvolgono un utente al di fuori di un carousel, inserirli in un carosello non migliorerà il loro rendimento. Se devi usare un carosello, dai la priorità ai contenuti e assicurati che ogni diapositiva sia sufficientemente pertinente da indurre un utente a fare clic per passare alla diapositiva successiva.