Sur les pages de liste de questions de mon produit, Front Prep, j'affiche les logos des entreprises à côté des questions d'entretien. Lorsque vous survolez un logo, une infobulle affiche le nom de l'entreprise. J'avais réglé le délai d'infobulle à 0, donc les infobulles apparaissaient instantanément lorsque je déplaçais le curseur sur la page.
Pour corriger cela, j'ai ajouté un délai de transition de 200 ms, mais cela a créé un nouveau problème : passer d'un logo à un autre signifiait attendre le même délai de 200 ms à chaque fois, ce qui semblait lent. Cet article concerne un petit modèle d'interaction que l'on trouve dans les barres d'outils des navigateurs et les sites Web. Ma solution se divise en trois parties : survolez un logo, l'infobulle attend 200 ms avant de s'ouvrir.
Lorsqu'une infobulle se ferme, un minuteur de 300 ms démarre, que j'appelle la fenêtre chaude. Si vous survolez un autre logo pendant que ce minuteur est actif, l'infobulle s'ouvre instantanément, en sautant le délai. Lorsque le minuteur expire, la page devient froide, et l'attente de 200 ms revient.
Dans Front Prep, mes infobulles sont construites avec Radix et Motion. Le code utilise une variable useContext pour suivre l'état isWarm entre les composants. Au survol, le composant vérifie si la page est chaude ; si c'est le cas, l'infobulle s'ouvre instantanément ; sinon, il démarre un minuteur de 200 ms.
La fonction show copie l'état chaud dans un indicateur instantané, que CSS utilise pour sauter l'animation d'entrée via un attribut de données. Ce modèle améliore l'expérience utilisateur en évitant à la fois les popups instantanés et les retards lents. C'est une approche simple que vous pouvez implémenter dans votre propre base de code.
Entités clés : Entreprises : Front Prep. FAQ : Qu'est-ce que le modèle de fenêtre chaude pour les infobulles ? Le modèle de fenêtre chaude ajoute un délai de 200 ms avant l'ouverture d'une infobulle, mais après la fermeture, un minuteur de refroidissement de 300 ms démarre. Si vous survolez une autre infobulle pendant ce refroidissement, elle s'ouvre instantanément, évitant les retards répétés lors du déplacement entre des éléments proches.
Source: Hacker News · Résumé par HeadlinesBriefing