Gap variable sur un input type="range"

Exemple d'<input type="range"> personnalisé avec des « gap » variables et une « tooltip » suivant le curseur.

Simulateur

Valeur du bien

Pour un bien de
vous économiserez

Détails des valeurs affichées

Nota

Les données affichées sont mises à jour classiquement avec JavaScript, la position de la « tooltip » et de la barre d'avancement sont mises à jour en CSS via JavaScript en utilisant les variables CSS.

Concernant la barre d'avancement, les choses auraient pu être simple si le moteur de rendu Blink (Chromium et consorts) reconnaissait le pseudo-élément ::-moz-range-progress, présent dans Gecko, (FireFox) et parfaitement autonome, il suffit de lui déclarer la couleur de fond souhaitée.

Il va donc falloir, au moins pour Blink, gérer la propriété background du pseudo-élément ::-webkit-slider-runnable-track.

Une autre façon de procéder est d'utiliser la propriété background-size de l'<input> pour simuler l'avancement, c'est celle choisie dans l'exemple ci-dessus.

Mais dans tous les cas on est obligé d'avoir recours à JavaScript pour gérer cela afin d'obtenir un rendu identique sur les différents navigateurs.

Pour finir et être parfaitement honnête, il existe une solution en pur CSS combinant les propriétés clip-path et box-shadow, certes moins paramétrable mais tout autant efficace !