- @stanko/dual-range-input est une bibliothèque d’entrée native à double plage qui utilise deux entrées
range HTML natives.
- Elle conserve toutes les interactions par défaut et les fonctionnalités d’accessibilité grâce à l’utilisation d’entrées natives.
- Elle se compose d’environ 50 lignes de JavaScript et de CSS.
- Pourquoi c’est nécessaire
- Elle est utilisée comme interface pour ajuster des paramètres dans un outil de dessin génératif, avec besoin de curseurs minimum et maximum.
- Les solutions existantes reposent sur JavaScript et réimplémentent les fonctions de glisser-déposer et d’accessibilité.
- En utilisant des entrées
range HTML natives, cliquer sur la piste doit déplacer le curseur le plus proche vers cette valeur.
- Principe de fonctionnement
- Deux entrées sont placées côte à côte et, lorsqu’une entrée change, le point médian entre les deux valeurs est calculé.
- Les propriétés minimum et maximum sont définies sur ce point médian, puis la largeur des entrées est mise à jour.
- Redimensionnement des entrées
- Lors du calcul de la largeur des entrées, il faut tenir compte du fait que la piste est plus courte que la largeur réelle de l’entrée.
- Le calcul est simplifié en ajoutant la largeur du pouce à la largeur de l’entrée.
- Un padding est ajouté au conteneur des entrées pour absorber la largeur supplémentaire du pouce.
- Déplacement du pouce au clic
- Les entrées sont redimensionnées pour se rejoindre au point médian, et au clic, le pouce le plus proche se déplace vers cette valeur.
- Il est possible d’activer un mode debug pour visualiser facilement le point médian.
- Style
- Les entrées
range peuvent être stylisées avec du CSS.
- Le style de la piste et du pouce est simple, et le rayon de bordure est supprimé sur la partie centrale de raccord de la piste.
- Thème
- Plusieurs variables sont exposées pour permettre de modifier facilement le thème.
- Des valeurs par défaut sont fournies, et il est possible de créer un thème en redéfinissant les variables.
- Dégradé
- Un dégradé CSS est utilisé pour peindre la plage sélectionnée.
- La variable
--dri-gradient-position est utilisée pour définir le dégradé et est mise à jour dans le code en même temps que la largeur.
- Conclusion
- Ce billet vise à mettre les idées à plat et espère inspirer l’usage d’éléments natifs.
1 commentaires
Commentaires Hacker News
<input type=range>, et qu’il existe dans Firefox un bug où cliquer sur une poignée fait changer la valeur d’un cran