In uno script precedente abbiamo visto come sia possibile utilizzare un font personalizzato la direttiva @font-face di CSS3: https://www.html5italia.com/script/42/Font-Layout-Personalizzati-CSS3.aspx
Una tecnica molto diffusa per disegnare le icone, prevede di utilizzare un iconic font per le immagini, beneficiando della possibilità di adattare le stesse in maniera vettoriale, proprio come avverrebbe per un font "normale".
La presenza di diversi dispositivi con pixel-density differenti (es. display Retina) può infatti rendere necessario adottare alcuni accorgimenti per la gestione delle dimensioni di un immagine, come dimostrato nello script: https://www.html5italia.com/script/56/Adattare-Immagini-Base-Pixel-Density-HTML5-CSS3.aspx
Adottare un iconic font per la gestione delle immagini porta i seguenti benefici:
- portabilità e "peso" ridotto
- controllo dell'aspetto mediante css (icona, colore, dimensioni, ombreggiatura...)
- mantenimento dell'aspetto e dei dettagli a qualsiasi dimensione (scalable vector graphics)
- supporto dei display ad alta risoluzione
Esistono molteplici iconic font gratuiti e a pagamento che consentono diverse possibilità di estensione, nell'esempio abbiamo utilizzato Font Awesome disponibile qui: http://fortawesome.github.com/Font-Awesome/
Con gli iconic font si possono ottenere layout molto gradevoli e, soprattutto, portabili sui diversi tipi di display:
Di seguito lo script dell'esempio:
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>Using iconic font</title> <link rel="stylesheet" href="https://raw.github.com/FortAwesome/Font-Awesome/master/css/font-awesome.min.css" type="text/css"/> </head> <body> <div class="headItem"> <span class="space1">Code</span> <span class="space2">Description</span> <span class="space1">Price</span></div> <div class="item"> <span class="space1">code1</span> <span class="space2">article one</span> <span class="space1">100.00 ¤</span> <a href="#" class="button addtocart"><i class="icon-shopping-cart icon-large" title="add"></i> add to cart</a> </div> <div class="item"> <span class="space1">code2</span> <span class="space2">article two</span> <span class="space1">120.00 ¤</span> <a href="#" class="button addtocart"><i class="icon-shopping-cart icon-large" title="add"></i> add to cart</a> </div> <div class="item"> <span class="space1">code3</span> <span class="space2">article three</span> <span class="space1">115.00 ¤</span> <a href="#" class="button addtocart"><i class="icon-shopping-cart icon-large" title="add"></i> add to cart</a> </div> <div class="footerItem"> <span class="space1"></span> <span class="space2"></span> <span class="space1"></span> <a href="#" class="button checkout"><i class="icon-arrow-right icon-large" title="add"></i> Checkout</a> </div> </body> </html>
body{ font-family: helvetica; } a:link{ text-decoration:none; } .button{ border-radius: 3px; padding-left: 10px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px; } .checkout{ color:black; background-color: gold; } .addtocart{ color: white; background-color: dodgerblue; } .space1{ display:inline-block; width:100px; } .space2{ display:inline-block; width:200px; } .headItem{ border-bottom:2px solid gray; padding:7px; } .item{ border-bottom:2px dotted gray; padding:7px; } .footerItem{ margin-top:30px; padding:7px; }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Effettuare il refresh dei dati di una QuickGrid di Blazor
Usare le navigation property in QuickGrid di Blazor
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Generare velocemente pagine CRUD in Blazor con QuickGrid
Implementare l'infinite scroll con QuickGrid in Blazor Server
Estrarre dati randomici da una lista di oggetti in C#
Usare le collection expression per inizializzare una lista di oggetti in C#
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Definire stili a livello di libreria in Angular