Publier Optimiser — Vitesse & UX
Lorsque vous utilisez Insérer/Remplacer (menu Section) ou déclencheur Sélecteur CSS (menu Slide), le site Web a besoin d’un bref moment pour charger Navi+. Pendant ce temps, l’élément original (l’ancien menu du thème) est toujours visible — provoquant un flash ou un décalage de mise en page.
Quand l’optimisation est-elle nécessaire ?
| Méthode | Besoin d’optimisation ? |
|---|---|
Sticky / FAB (App Embeds / <head>) |
Non — le menu est ajouté au DOM, rien n’est remplacé |
| Menu Slide — Méthode 1 (ouvrir depuis un élément Navi+) | Non — le bouton de déclenchement est un élément Navi+ |
| Menu Slide — Méthode 2 (déclencheur Sélecteur CSS) | Oui — l’élément de déclenchement original reste visible jusqu’à ce que Navi+ se charge |
| Section — Remplacer | Oui — le menu original s’affiche d’abord, puis est remplacé par Navi+ |
| Section — Insérer Avant/Après | Non requis — deux menus apparaissent côte à côte |
Technique : Masquer l’élément original via CSS
Comment ça fonctionne
- Utilisez CSS pour masquer l’élément original immédiatement (avant que Navi+ ne se charge).
- Optionnellement, montrez un espace réservé de chargement pour éviter le décalage de mise en page.
- Navi+ supprime ou remplace automatiquement l’élément lorsque prêt — la mise en page se stabilise.
Mise en œuvre
Ajoutez CSS pour masquer l’élément original (collez dans le CSS personnalisé du thème ou <head>) :
/* Masquer le menu original pendant le chargement de Navi+ */
nav.header__inline-menu ul.list-menu {
visibility: hidden;
min-height: 44px; /* réserver de l'espace pour éviter le décalage de mise en page */
}
Une fois que Navi+ remplace l’élément, ce CSS n’a aucun effet — l’élément est supprimé du DOM.
Avec espace réservé de chargement (avancé) :
nav.header__inline-menu ul.list-menu {
visibility: hidden;
position: relative;
}
nav.header__inline-menu ul.list-menu::before {
content: "";
position: absolute;
inset: 0;
background: #f5f5f5;
border-radius: 4px;
}
Cas particulier : Menu Slide avec déclencheur Sélecteur CSS
Lorsqu’un menu Slide utilise un déclencheur Sélecteur CSS (Méthode 2), l’élément de déclenchement original (par exemple, le bouton hamburger du thème) est toujours visible et fonctionne toujours (ouvre le panneau latéral du thème) jusqu’à ce que Navi+ se charge et remplace l’événement.
Solution A : Masquer l’élément original, utiliser un élément Navi+ comme déclencheur à la place
/* Masquer le bouton hamburger du thème */
#Details-menu-drawer-container {
display: none !important;
}
Ensuite, utilisez Méthode 1 (ouvrir depuis un élément Navi+) au lieu de la Méthode 2 — plus propre, pas de flash à craindre.
Solution B : Faire disparaître l’élément original
#Details-menu-drawer-container {
opacity: 0;
pointer-events: none;
transition: opacity 0.2s;
}
Ajoutez JS : lorsque Navi+ est prêt (naviReady événement), supprimez le style de masquage pour restaurer la visibilité de l’élément original.
Notes générales sur la vitesse
start.jsse charge avecasync— ne bloque pas le rendu de la page.- La configuration JSON du menu est mise en cache sur Cloudflare CDN — chargement rapide depuis le nœud de bord le plus proche.
- Pas de rendu côté serveur pour les visiteurs — tout le rendu du menu se fait côté client à partir de JSON statique.
Pour précharger le script pour une vitesse maximale :
<link rel="preload" href="https://live.naviplus.app/start.js" as="script">