Con la comparsa dei primi dispositivi mobile con display ad alta risoluzione (es. Retina display di Apple) e successivamente di alcuni modelli di laptop, le immagini visualizzate da un sito web, se non adeguatamente gestite, appaiono evidentemente con una definizione inferiore che a volte può risultare sgradevole.
Questi nuovi display, a parità di superficie, visualizzano un numero di pixel 4 volte superiore a quelli "standard", causando il downsampling delle immagini che non sono state realizzate e adattate.
Uno dei modi per ovviare a questo problema è gestire il Pixel Density con le CSS3 Media Queries, provvedendo una immagine alternativa ottimizzata per i nuovi display. Questo approccio consente di servire solo l'immagine con risoluzione più idonea per il dispositivo corrente senza alterare le dimensioni (in css pixel) della stessa.
Ricordiamo che un css pixel è una unità di misura astratta, utilizzata dai browser, per renderizzare i contenuti in maniera consistente e indipendentemente dalle capacità del dispositivo. Nei device "standard" il rapporto tra CSS pixel e pixel reali è 1:1, mentre in quelli ad alta risoluzione, ad esempio Retina display, è 1:2. Trattandosi si una superficie piana, il numero di pixel cresce di quattro volte.
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>Pixel density</title> </head> <body> <img class="icon" alt="icon"/> </body> </html>
.icon { background-image: url(example.png); background-color: blue; } @media only screen and (-Webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min-device-pixel-ratio: 1.5) { .icon { background-image: url(example@2x.png); background-color: blue; } }
Questa semplice soluzione sebbene consenta di servire solo l'immagine più idonea per il display corrente, di contro prevede la disponibilità di una immagine alternativa con risoluzione maggiore.
Le specifiche delle CSS3 Media Queries sono disponibili qui: http://www.w3.org/TR/css3-mediaqueries/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Testare l'invio dei messaggi con Event Hubs Data Explorer
Combinare Container Queries e Media Queries
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Selettore CSS :has() e i suoi casi d'uso avanzati
Gestione ciclo di vita in .NET Aspire
Ottenere un token di accesso per una GitHub App
Gestione CSS in Blazor con .NET 9
Creare una libreria CSS universale: Nav menu
Gestire gli accessi con Token su Azure Container Registry
Gestione dei nomi con le regole @layer in CSS
Testare il failover sulle region in Azure Storage
I più letti di oggi
- PWAConf 2020 - Online
- Gestione ciclo di vita in .NET Aspire
- Inserire, modificare o cancellare record con ADO.NET
- Redirect automatico da HTTP a HTTPs
- #SQLServer #Modeling (codename Oslo) CTP di nov 2009 aggiornato per VS 2010 RC: http://u.aspitalia.com/fi
- Supporto migliorato agli statement condizionali nelle pipeline di Azure DevOps
- Semplificare il deploy di applicazioni Silverlight con la compilazione condizionale
- Gestire l'errore di caricamento dell'immagine in Silverlight 2.0
- Rimandare l'elaborazione di un messaggio di una coda Service Bus in Windows Azure
- Abilitare la compressione GZip nei website di Windows Azure