Habille enfin les liens du menu : NavLink échappe à l'isolation CSS
Les six entrées restaient en bleu souligné par défaut : l'isolation CSS de Blazor ne pose son attribut de portée que sur le balisage du composant courant, jamais sur ce que rend un composant enfant. NavLink étant un composant, `.menu-lien` déclaré dans MainLayout.razor.css ne correspondait à aucun élément — alors que `.menu` et `.bandeau`, du balisage propre, étaient bien habillés. Les règles du menu passent en feuille globale plutôt qu'en `::deep` : la navigation ne dépend plus du bundle d'isolation ni de son cache, qui est précisément le fichier déjà vu servi périmé ou absent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2184,6 +2184,47 @@ un clic sur « Auteurs » laissait les six entrées empilées au-dessus de la li
|
||||
Conséquence sur `app.css` : `--mb-onglets-hauteur` **a disparu**, et `.actions-flottantes`
|
||||
se pose directement en `bottom: 0`. Plus rien ne l'accompagne en bas de l'écran.
|
||||
|
||||
### ⚠️ Les liens du menu n'étaient atteints par AUCUNE règle — `NavLink` est un composant
|
||||
|
||||
Symptôme remonté deux fois, la seconde capture d'écran à l'appui : « toujours les liens trop
|
||||
moches et pas ressemblant à un menu ». Le `<nav>` prenait bien son fond bleu sombre, et les six
|
||||
entrées restaient en **bleu Bootstrap souligné**, empilées sans marge — l'aspect exact d'un
|
||||
`<a>` sans style.
|
||||
|
||||
**Ce n'était pas un cache, contrairement aux deux défauts précédents** (lot A1, icône du
|
||||
bandeau), et c'est ce qui a fait perdre du temps : la feuille scopée était bien chargée, elle
|
||||
habillait le bandeau juste au-dessus.
|
||||
|
||||
La cause est une règle de l'isolation CSS de Blazor :
|
||||
|
||||
> l'attribut de portée (`b-xxxx`) n'est posé que sur les éléments écrits dans le balisage du
|
||||
> composant courant — **jamais sur ce que rend un composant enfant**.
|
||||
|
||||
`NavLink` **est un composant**. `.menu-lien` déclaré dans `MainLayout.razor.css` devenait
|
||||
`.menu-lien[b-xxxx]`, et l'`<a>` rendu par `NavLink` ne porte pas cet attribut : la règle ne
|
||||
correspondait à rien. `.menu` et `.bandeau`, eux, sont du balisage propre au composant, d'où le
|
||||
fond sombre présent et les liens nus. C'est précisément pour cela que le gabarit Blazor par
|
||||
défaut écrit ses règles de navigation avec `::deep`.
|
||||
|
||||
**Correction retenue : les règles du menu passent en feuille GLOBALE** (`wwwroot/css/app.css`),
|
||||
plutôt que `::deep`. Les deux corrigent le bug ; la feuille globale corrige en plus une
|
||||
fragilité connue — la navigation ne dépend alors ni du bundle `MaBibli.Client.styles.css` ni de
|
||||
son cache, c'est-à-dire du fichier même qu'un appareil a déjà servi périmé ou pas du tout. **La
|
||||
navigation est ce qui doit le moins pouvoir tomber.**
|
||||
|
||||
⚠️ Le point de rupture de **40 rem** est désormais écrit à **deux endroits** : `app.css` (le
|
||||
menu passe en rangée) et `MainLayout.razor.css` (la bascule se masque — elle, c'est du balisage
|
||||
propre, donc scopable). Les deux doivent rester identiques.
|
||||
|
||||
**Règle à retenir au-delà de ce cas** : toute règle scopée visant un élément rendu par un
|
||||
composant enfant (`NavLink`, et tout composant du projet) est morte-née. Soit `::deep`, soit la
|
||||
feuille globale.
|
||||
|
||||
Vérifié en exécution, styles calculés à l'appui : à 375 px, menu déployé, liens en `#e8edf3`,
|
||||
`text-decoration: none`, 45 px de haut, l'entrée active en blanc gras avec sa bordure jaune ; à
|
||||
1280 px, rangée horizontale centrée (six liens sur la même ligne à y = 55) et bascule
|
||||
`display: none`, sans débordement horizontal.
|
||||
|
||||
### Un retour explicite dans le bandeau
|
||||
|
||||
« Le déplacement est foireux » : d'un écran profond (bibliographie, fiche de tome, ajout
|
||||
|
||||
Reference in New Issue
Block a user