Skip to content

Type de ressource : Composant Astro (UI atomique)
Fichier source : src/components/Footer.astro
Statut : Actif

Composant de pied de page contenant le copyright avec l’annĂ©e courante et les liens vers les rĂ©seaux sociaux (Mastodon, Twitter, GitHub).

  • Afficher le copyright avec l’annĂ©e courante
  • Fournir des liens vers les rĂ©seaux sociaux
  • Assurer une cohĂ©rence visuelle en bas de page
  • ComplĂ©ter la navigation globale du site
Propriété Valeur
Type UI atomique
Hydratation Aucune
Framework JS Aucun
Accessibilité Partiellement conforme
Responsive Non applicable
src/components/
├── BaseHead.astro
├── Header.astro
├── Footer.astro
├── FormattedDate.astro
└── HeaderLink.astro
Composant parent Fichier Relation
Toutes les pages src/pages/*.astro Utilisation dans le <body>

Aucun composant enfant n’est utilisĂ© (composant leaf).

3.1. Variante : Composant UI atomique (HTML + CSS purs)

Section titled “3.1. Variante : Composant UI atomique (HTML + CSS purs)”
---
const today = new Date();
---
<footer>
&copy; {today.getFullYear()} Your name here. All rights reserved.
<div class="social-links">
<a href="https://m.webtoo.ls/@astro" target="_blank">
<span class="sr-only">Follow Astro on Mastodon</span>
<svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32" astro-icon="social/mastodon">
<path fill="currentColor" d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z" />
</svg>
</a>
<a href="https://twitter.com/astrodotbuild" target="_blank">
<span class="sr-only">Follow Astro on Twitter</span>
<svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32" astro-icon="social/twitter">
<path fill="currentColor" d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z" />
</svg>
</a>
<a href="https://github.com/withastro/astro" target="_blank">
<span class="sr-only">Go to Astro's GitHub repo</span>
<svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32" astro-icon="social/github">
<path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z" />
</svg>
</a>
</div>
</footer>
<style>
footer {
padding: 2em 1em 6em 1em;
background: linear-gradient(var(--gray-gradient)) no-repeat;
color: rgb(var(--gray));
text-align: center;
}
.social-links {
display: flex;
justify-content: center;
gap: 1em;
margin-top: 1em;
}
.social-links a {
text-decoration: none;
color: rgb(var(--gray));
}
.social-links a:hover {
color: rgb(var(--gray-dark));
}
</style>
---
import Footer from '../components/Footer.astro';
---
<!doctype html>
<html lang="en">
<body>
<main>
<!-- Contenu de la page -->
</main>
<Footer />
</body>
</html>

Aucune prop n’est obligatoire (composant sans props).

Aucune prop n’est disponible (composant sans props).

Aucun slot n’est implĂ©mentĂ© dans ce composant.

Type de composant Stratégie Rationale
Composant UI atomique Aucune HTML + CSS purs, pas d’interaction

Aucune directive n’est utilisĂ©e (composant HTML pur).

Métrique Sans hydratation
HTML size +2 KB
CSS size +1 KB
JS size 0 KB
TTI Immédiat
/* Le composant utilise des variables CSS personnalisées */
footer {
background: linear-gradient(var(--gray-gradient)) no-repeat;
color: rgb(var(--gray));
}
.social-links a:hover {
color: rgb(var(--gray-dark));
}

Non applicable - le composant utilise des flexbox responsive par défaut.

Non implémenté - le composant utilise des variables CSS personnalisées.

CritÚre Implémentation Statut
1.1.1 Non-text Content Alt text pour les SVG (aria-hidden) ✅
1.3.1 Info and Relationships Structure HTML sĂ©mantique (<footer>) ✅
1.4.3 Contrast (Minimum) Non testĂ© ⚠
2.1.1 Keyboard Navigation clavier complùte (Tab, Enter) ✅
2.4.7 Focus Visible Non testĂ© ⚠
4.1.2 Name, Role, Value sr-only pour les liens sociaux ✅
<!-- Liens sociaux -->
<span class="sr-only">Follow Astro on Mastodon</span>
<svg aria-hidden="true">...</svg>
Touche Action
Tab Navigation vers les liens sociaux
Enter Activation des liens
Terminal window
# Test avec Lighthouse
npx lighthouse http://localhost:4321/ --view
  • ✅ HTML statique par dĂ©faut
  • ✅ CSS scoped
  • ✅ Pas de JavaScript
  • ✅ SVG inline (pas de requĂȘte HTTP supplĂ©mentaire)
  • ✅ Astro Icons pour les SVG (si configurĂ©)
Métrique Objectif Stratégie
LCP < 2.5s Pas de JS bloquant
INP < 200ms Pas de JS
CLS < 0.1 Dimensions explicites des SVG
Type HTML CSS JS (hydraté) Total
UI atomique 2 KB 1 KB 0 KB 3 KB
SymptĂŽme Cause probable Solution
Année incorrecte Calcul cÎté serveur Vérifier que new Date() est appelé correctement
Styles cassés Variables CSS non définies Vérifier les variables CSS personnalisées
SVG non affichés Astro Icons non configuré Vérifier la configuration Astro Icons
Terminal window
# Test local
npm run dev
# Vérification de l'année
# Vérifier que l'année affichée est l'année courante

Non applicable (composant statique).

  • ✅ Calcul de l’annĂ©e cĂŽtĂ© serveur (pas de JavaScript)
  • ✅ Utilisation de sr-only pour le texte alternatif
  • ✅ Utilisation de aria-hidden="true" pour les SVG dĂ©coratifs
  • ✅ CSS scoped pour Ă©viter les fuites de styles
  • ✅ Utiliser des Ă©lĂ©ments HTML sĂ©mantiques (<footer>)
  • ✅ Fournir du texte alternatif pour les liens sociaux
  • ✅ Tester la navigation au clavier
  • ⚠ AmĂ©liorer le contraste des couleurs
  • ⚠ AmĂ©liorer le focus visible
  • ✅ Éviter l’hydratation (pas d’interaction requise)
  • ✅ SVG inline (pas de requĂȘte HTTP)
  • ✅ Mettre Ă  jour le nom du propriĂ©taire (“Your name here”)
  • ✅ Mettre Ă  jour les liens sociaux selon les besoins
  • Ajout du mode sombre
  • AmĂ©lioration du contraste pour WCAG AA
  • AmĂ©lioration du focus visible
  • Personnalisation du nom du propriĂ©taire via props
  • ❌ Nom du propriĂ©taire hardcodĂ© (“Your name here”)
  • ❌ Pas de mode sombre
  • ❌ Liens sociaux hardcodĂ©s (non configurables)
  • ❌ Astro Icons peut ne pas ĂȘtre configurĂ©
  • Documentation Astro : Components
  • Documentation Astro Icons : Astro Icons
  • Composants associĂ©s :
    • src/components/Header.astro
Date Version Description Auteur
2026-09-15 1.0 Création initiale Devin
Edit page

Last updated: