En aquest tema, aprendrem com aplicar estils als components d'Angular. Els estils són una part essencial del desenvolupament web, ja que permeten donar una aparença visual atractiva i coherent a les aplicacions. Angular proporciona diverses maneres d'aplicar estils als components, incloent estils en línia, estils en fitxers CSS externs i estils encapsulats.
Continguts
Estils en línia
Els estils en línia es defineixen directament dins del component utilitzant la propietat styles
del decorador @Component
.
import { Component } from '@angular/core'; @Component({ selector: 'app-inline-styles', template: `<h1>Hola, Angular!</h1>`, styles: [` h1 { color: blue; font-size: 24px; } `] }) export class InlineStylesComponent {}
Avantatges
- Fàcil d'implementar per a estils simples i ràpids.
- Els estils estan encapsulats dins del component.
Desavantatges
- Pot resultar en codi desordenat si els estils són complexos.
- Difícil de mantenir i reutilitzar.
Estils en fitxers CSS externs
Els estils també es poden definir en fitxers CSS externs i referenciar-los en el component utilitzant la propietat styleUrls
.
import { Component } from '@angular/core'; @Component({ selector: 'app-external-styles', template: `<h1>Hola, Angular!</h1>`, styleUrls: ['./external-styles.component.css'] }) export class ExternalStylesComponent {}
external-styles.component.css
Avantatges
- Millor organització del codi.
- Fàcil de mantenir i reutilitzar estils.
- Separació clara entre la lògica del component i els estils.
Desavantatges
- Pot requerir més configuració inicial.
Encapsulament d'estils
Angular encapsula els estils per defecte, de manera que els estils definits en un component no afecten altres components. Això es fa mitjançant l'ús de l'atribut [_ngcontent-*]
en els elements HTML.
Modes d'encapsulament
- Emulated (per defecte): Utilitza atributs per encapsular estils.
- None: No encapsula els estils, fent-los globals.
- ShadowDom: Utilitza Shadow DOM per encapsular estils (només en navegadors que ho suporten).
import { Component, ViewEncapsulation } from '@angular/core'; @Component({ selector: 'app-encapsulation', template: `<h1>Hola, Angular!</h1>`, styles: [` h1 { color: red; font-size: 24px; } `], encapsulation: ViewEncapsulation.Emulated // Can be None or ShadowDom }) export class EncapsulationComponent {}
Estils globals
Els estils globals s'apliquen a tota l'aplicació i es defineixen en fitxers CSS que es carreguen en el fitxer angular.json
.
styles.css
angular.json
{ "projects": { "your-project-name": { "architect": { "build": { "options": { "styles": [ "src/styles.css" ] } } } } } }
Avantatges
- Fàcil d'aplicar estils comuns a tota l'aplicació.
- Ideal per a estils de disseny global com fonts i colors.
Desavantatges
- Pot interferir amb els estils encapsulats dels components.
Exercicis pràctics
Exercici 1: Estils en línia
- Crea un nou component anomenat
InlineStyleExample
. - Defineix un estil en línia que faci que el text
<p>Hola, món!</p>
sigui de color blau i tingui una mida de font de 20px.
Solució:
import { Component } from '@angular/core'; @Component({ selector: 'app-inline-style-example', template: `<p>Hola, món!</p>`, styles: [` p { color: blue; font-size: 20px; } `] }) export class InlineStyleExampleComponent {}
Exercici 2: Estils en fitxers CSS externs
- Crea un nou component anomenat
ExternalStyleExample
. - Defineix un fitxer CSS extern que faci que el text
<p>Hola, món!</p>
sigui de color verd i tingui una mida de font de 18px.
Solució:
import { Component } from '@angular/core'; @Component({ selector: 'app-external-style-example', template: `<p>Hola, món!</p>`, styleUrls: ['./external-style-example.component.css'] }) export class ExternalStyleExampleComponent {}
external-style-example.component.css
Exercici 3: Encapsulament d'estils
- Crea un nou component anomenat
EncapsulationExample
. - Defineix estils encapsulats que facin que el text
<p>Hola, món!</p>
sigui de color vermell i tingui una mida de font de 22px.
Solució:
import { Component, ViewEncapsulation } from '@angular/core'; @Component({ selector: 'app-encapsulation-example', template: `<p>Hola, món!</p>`, styles: [` p { color: red; font-size: 22px; } `], encapsulation: ViewEncapsulation.Emulated // Can be None or ShadowDom }) export class EncapsulationExampleComponent {}
Conclusió
En aquesta secció, hem après com aplicar estils als components d'Angular utilitzant estils en línia, estils en fitxers CSS externs i estils encapsulats. També hem vist com definir estils globals per a tota l'aplicació. Els exercicis pràctics ens han ajudat a consolidar aquests conceptes. En la següent secció, explorarem com els components poden interactuar entre ells.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular