Hover✨ Premium

Fill Up

Un ::after monte de bas en haut (height 0 → 100 %) au survol avec une courbe ease-quart-out — l'élément se remplit verticalement comme un verre qu'on remplirait ; texte toujours lisible grâce au z-index.

CSSFillBezier

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Hover comprend 48 effets, dont 5 gratuits. Découvrir la catégorie →

3 exemples d'usage

Onglets de paramètres — interface de compte utilisateur — Fill Up exemple 1

① Onglets de paramètres — interface de compte utilisateur

QuandOnglets de navigation (Compte, Sécurité, Notifications) dans le header de la page paramètres de Nolvex ; au survol ou au focus, chaque onglet se remplit de bas en haut et le texte passe en blanc.
PourquoiLe remplissage de bas en haut sur un onglet de paramètres rend le changement de section physiquement lisible : l'œil suit la montée du fond et anticipe la sélection.
RéglagesPetits onglets en ligne dans un header ; fond sombre ; texte accent indigo au repos, blanc au survol ; transition fill de 0,6 s ; focus cycling par script.
Carte de plan tarifaire Pro — page d'abonnement SaaS — Fill Up exemple 2

② Carte de plan tarifaire Pro — page d'abonnement SaaS

QuandLa carte du plan Pro dans le tableau de plans de Flux (Gratuit, Pro, Entreprise) ; au survol, la carte se remplit de bas en haut, révélant le fond accent indigo avec le texte blanc.
PourquoiLe fill-up sur la carte recommandée crée une hiérarchie visuelle dynamique : pendant le survol, le plan Pro se sélectionne visuellement et guide la décision de l'utilisateur vers l'option cible.
RéglagesGrande carte verticale avec badge et prix ; fond sombre au repos ; fond accent indigo au survol ; liste de fonctionnalités ; transition fill 0,6 s.
Bouton de soumission — formulaire de candidature spontanée — Fill Up exemple 3

③ Bouton de soumission — formulaire de candidature spontanée

QuandBouton « Envoyer ma candidature » à la fin du formulaire de candidature de Talvyn ; au survol ou au focus, le fond monte de bas en haut et le texte passe en noir sur fond vert.
PourquoiLe fill-up sur le CTA de formulaire transforme l'envoi d'un dossier en geste d'engagement visuel : la montée du fond signale que l'action est imminente et renforce la confiance du candidat.
RéglagesBouton pleine largeur dans un formulaire de candidature ; fond vert sombre au repos ; fond accent vert clair au survol ; toggle focus par script ; transition fill 0,6 s.

Comment ça marche

La racine .fx-0355-root centre un bloc .hover-box.hover-fill-up de 200 × 200 px. L'élément porte un fond transparent, une bordure violette et un texte violet au repos. Un pseudo-élément ::after positionné en bottom: 0; left: 0; width: 100% part avec height: 0 et monte jusqu'à height: 100% au survol avec un dégradé linear-gradient(135deg, #a78bfa, #8b5cf6).

La courbe de transition est cubic-bezier(0.65, 0, 0.35, 1) — dite ease-quart-out — qui démarre lentement puis accélère en fin de course, donnant l'impression que le liquide arrive vite en haut. Le texte passe de violet à blanc en même temps (transition: color .6s). Le z-index: -1 du ::after le place derrière le span (z-index 1) : le texte reste toujours lisible.

Mesuré dans Chromium 151 : fill de bas en haut, couleur du texte change, deux copies sur la même page — seule celle survolée se remplit.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, les transitions sont annulées ; le fill et le changement de couleur restent fonctionnels (le ::after passe à 100 % de hauteur et le texte devient blanc instantanément). L'état survol reste lisible.
  • Clavier : l’élément est un <button> nativement focusable. La règle :focus-visible déclenche le remplissage et le changement de couleur ; un contour indigo signale le focus.
  • Contraste : le texte violet (#a78bfa) sur fond sombre au repos a un ratio de 5,4:1 (WCAG AA). Au survol, le texte blanc sur fond violet a un ratio de 7,8:1.
  • Toucher : le premier toucher déclenche le fill ; il reste en place jusqu'au prochain toucher. Sur mobile, l'état rempli peut rester actif après le départ du doigt.

Compatibilité navigateur

CSS pur (::after, height, cubic-bezier, transition, :focus-visible, prefers-reduced-motion), aucun JavaScript. Mesuré dans Chromium 151 : fill visible, texte lisible, deux copies indépendantes. Fonctionne dans tous les navigateurs modernes.

Chrome 60+✓ Complet (mesuré)
Firefox 55+✓ Complet
Safari 10.1+✓ Complet
Edge 79+✓ Complet (moteur Chromium)
Mobile iOS 10.3+✓ Complet
Android Chrome 60+✓ Complet (moteur Chromium)

Sans transition, le fill apparaît instantanément au survol. Sans z-index correctement géré, le texte peut être masqué par le ::after — vérifiez que le span a position: relative; z-index: 1.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0355-root">
  <button class="hover-box hover-fill-up" type="button">
    <span>…</span>
  </button>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Couleur du fill (CSS — background du ::after) linear-gradient(135deg, #a78bfa, #8b5cf6) Remplacez par une couleur unie (#10b981 vert) ou un dégradé différent. La couleur du fill peut correspondre à l'identité de la marque.
Courbe de remplissage (CSS — cubic-bezier(.65, 0, .35, 1)) ease-quart-out (accélération en fin de course) linear donne un fill régulier ; ease-in démarre vite et ralentit ; cubic-bezier(.17, .67, .83, .67) donne un léger rebond.
Durée (CSS — transition: height .6s) 600 ms .3s pour un fill vif, 1s pour un fill lent et dramatique.
Bordure (CSS — border de .hover-fill-up) 2 px solid #a78bfa Retirez la bordure pour un fond plein au repos (background: var(--bg-card) + border: none) ; dans ce cas, le fill change le fond d'une couleur sombre à une couleur vive.
Direction (CSS — ancre du ::after) Du bas vers le haut (bottom: 0) Ancrez en top: 0; height: 0 → 100% (du haut vers le bas) ou left: 0; width: 0 → 100% (de la gauche vers la droite, fill horizontal).

FAQ

Utilisez une variable CSS : --fill: 60% sur l'élément, puis .hover-fill-up:hover::after { height: var(--fill) }. Pour des boutons de taille, posez la variable en ligne : style="--fill: 60%".
Oui. Le span a position: relative; z-index: 1 et le ::after a z-index: -1. La transition de couleur du texte (violet → blanc) accompagne le fill pour maintenir le contraste.
Non directement en CSS pur. Avec JavaScript, ajoutez la classe .filled au clic : el.classList.toggle('filled'), et déclenchez le fill via .hover-fill-up.filled::after { height: 100% }.