Cours Angular · Module 13: UI et styles
Tailwind CSS dans Angular
Dans cette leçon4
Tailwind est un framework CSS utility-first - comme un arsenal bien organisé.
Installation
1# Tailwind CSS 3 (avec la configuration présentée plus bas)
2npm install -D tailwindcss@3 postcss autoprefixer
3npx tailwindcss initAvec Tailwind CSS 4, l'installation est différente : npm install tailwindcss @tailwindcss/postcss postcss, puis un fichier .postcssrc.json avec le plugin @tailwindcss/postcss et la ligne @import "tailwindcss"; dans styles.css. Tu n'as alors pas besoin de tailwind.config.js, et la configuration de la section suivante concerne la version 3.
Configuration
1// tailwind.config.js
2module.exports = {
3 content: [
4 "./src/**/*.{html,ts}",
5 ],
6 theme: {
7 extend: {
8 colors: {
9 'samurai-red': '#c41e3a',
10 'samurai-gold': '#ffd700',
11 'dojo-dark': '#1a1a2e',
12 },
13 fontFamily: {
14 'japanese': ['Noto Sans JP', 'sans-serif'],
15 },
16 },
17 },
18 plugins: [],
19}1// styles.scss
2@tailwind base;
3@tailwind components;
4@tailwind utilities;
5
6@layer components {
7 .btn-samurai {
8 @apply bg-samurai-red text-white px-4 py-2 rounded-lg
9 hover:bg-red-700 transition-colors duration-200
10 focus:outline-none focus:ring-2 focus:ring-samurai-gold;
11 }
12
13 .card-dojo {
14 @apply bg-white dark:bg-dojo-dark rounded-xl shadow-lg
15 p-6 border border-gray-200 dark:border-gray-700;
16 }
17}Utilisation dans les composants
1@Component({
2 template: `
3 <div class="min-h-screen bg-gray-100 dark:bg-dojo-dark p-8">
4 <header class="flex items-center justify-between mb-8">
5 <h1 class="text-3xl font-bold text-samurai-red">Dojo</h1>
6 <button class="btn-samurai">New Samurai</button>
7 </header>
8
9 <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
10 @for (samurai of samuraiList(); track samurai.id) {
11 <article class="card-dojo hover:shadow-xl transition-shadow">
12 <h2 class="text-xl font-semibold mb-2">{{ samurai.name }}</h2>
13 <p class="text-gray-600 dark:text-gray-300">
14 Clan: {{ samurai.clan }}
15 </p>
16 <div class="mt-4 flex gap-2">
17 <button class="text-samurai-gold hover:underline">Edit</button>
18 <button class="text-red-500 hover:underline">Delete</button>
19 </div>
20 </article>
21 }
22 </div>
23 </div>
24 `
25})
26export class DojoGridComponent {
27 samuraiList = signal<Samurai[]>([]);
28}Combinaison avec Angular Material
1@Component({
2 imports: [MatButtonModule, MatCardModule],
3 template: `
4 <mat-card class="max-w-md mx-auto shadow-xl">
5 <mat-card-header class="bg-gradient-to-r from-samurai-red to-red-700 text-white rounded-t-lg">
6 <mat-card-title class="px-4 py-2">Samurai Profile</mat-card-title>
7 </mat-card-header>
8 <mat-card-content class="p-6">
9 <div class="space-y-4">
10 <!-- Content with Tailwind -->
11 </div>
12 </mat-card-content>
13 </mat-card>
14 `
15})
16export class HybridStyledComponent {}Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Comment fonctionnent les classes utilitaires dans Tailwind CSS ?
2. Que signifie la classe md:grid-cols-2 dans Tailwind CSS ?
Voici 2 des 5 questions de cette leçon. Réponds aux autres dans le jeu.
Tâches pratiques dans le jeu
- Tri vertical
Ordonne les directives Tailwind dans le fichier styles.scss comme indiqué dans la leçon (de haut en bas).
- Éditeur de code
Complète le composant carte avec des classes Tailwind CSS : la carte doit avoir un fond blanc et l'image les mêmes coins arrondis que la carte.
- Tri horizontal
Ordonne sur une seule ligne une règle @apply qui crée une classe personnalisée à partir d'utilitaires Tailwind.
- Clique dans l'ordre
Construis l'attribut class qui crée une carte avec Tailwind : class="bg-white rounded-lg shadow-lg"
- Tri horizontal
Ordonne les classes Tailwind pour une grille responsive : d'une base à 1 colonne jusqu'à 3 colonnes sur les grands écrans.