Grazie a librerie come Bootstrap, SemanticUI, Material e altre ancora, è diventato molto più semplice, rispetto al passato, creare interfacce grafiche coerenti a livello di stile, dimensioni del testo, spaziature e molto altro ancora. Queste librerie introducono una serie di classi CSS da utilizzare nel nostro codice per stilizzare gli elementi e spesso, per stilizzare un singolo elemento, dobbiamo assegnare più di una classe.
Per fare un esempio, per stilizzare un bottone piccolo in Bootstrap, dobbiamo assegnare all'oggetto button le seguenti classi: btn per dare gli stili di base di un bottone, btn-primary per specificare lo stile del bottone principale e btn-sm per assegnare gli stili che riducono le dimensioni del bottone. Sebbene assegnare queste classi sia estremamente semplice, è altrettanto semplice sbagliare a scrivere o dimenticare una classe. Inoltre, se ad un certo punto decidiamo di cambiare gli stili, dobbiamo ripassare in tutte le pagine o affidarci a dei replace.
In Angular possiamo limitare il problema creando una direttiva che imposta questi stili per noi.
@Directive({ selector: 'button[myButton]' }) export class ButtonDirective implements AfterViewInit { constructor(private renderer: Renderer2, private elementRef: ElementRef) {} ngAfterViewInit() { this.renderer.addClass(this.elementRef.nativeElement, 'btn btn-primary btn-sm'); } }
Questa direttiva si applica a tutti i tag button con l'attributo myButton. Non appena la view viene inizializzata, questa direttiva recupera il pulsante a cui è associata e gli aggiunge le classi CSS di bootstrap. Se decidessimo di cambiare le classi da applicare ai pulsanti, ci basterebbe modificare questa direttiva e automaticamente lamodifica verrebbe applicata a tutti i pulsanti con la direttiva.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Implementare l'infinite scroll con QuickGrid in Blazor Server
Creare una libreria CSS universale: i bottoni
Applicare un filtro per recuperare alcune issue di GitHub
Scrivere selettori CSS più semplici ed efficienti con :is()
Referenziare un @layer più alto in CSS
Usare le navigation property in QuickGrid di Blazor
Ottenere un token di accesso per una GitHub App
Utilizzare i variable font nel CSS
Path addizionali per gli asset in ASP.NET Core MVC
Utilizzare l'espressione if inline in una pipeline di Azure DevOps