← Tous les articles

Types d'actions

SLIDER : un contrôleur de variable CSS dans l'onglet — luminosité, zoom, taille de police au bout des doigts

Le JS est génial pour « faire X ». Le CSS est génial pour « ressembler toujours à Y ». Et si vous voulez « ajuster Y en douceur en temps réel » — parce que vous cherchez la luminosité de page parfaite, la taille de police optimale pour votre vue, ou que vous testez des niveaux de zoom dans un onglet ? Alors vous utilisez un SLIDER (depuis v2.13.19) — un <input type="range"> natif dans la barre d'actions JustZix avec un code JS qui se déclenche à chaque changement de valeur.

Anatomie d'un SLIDER — 4 parties + 4 couleurs séparées

Un SLIDER dans la barre d'actions est une div wrap avec trois enfants : label (gauche), <input type="range"> (milieu), affichage de la valeur (droite). Chaque partie a sa propre couleur (depuis v2.13.19 — sélecteur de couleur granulaire) :

// Propriété d'action → effet CSS
color           → fond de tout le wrap
colorText       → accent-color du curseur (le remplissage de la barre)
colorLabel      → text-color du label (côté gauche)
colorValue      → text-color de la valeur actuelle (côté droit)

// Définition de la plage
min: 0          // défaut 0
max: 100        // défaut 100
step: 1         // défaut 1
defaultValue: 50  // optionnel — retombe sur (min+max)/2
unit: '%'       // optionnel — ajouté à l'affichage de la valeur

Cas d'usage : un curseur « Luminosité » 50-150% peut avoir un fond violet (color), un remplissage de curseur blanc (colorText), un label « Luminosité » gris clair (colorLabel), une valeur « 100% » jaune (colorValue). 4 couleurs = 4 niveaux de contraste séparés, chacun avec un rôle.

Deux événements : input vs change — la différence clé

Le SLIDER ne déclenche le JS du champ Code que sur change (après le relâchement de la souris), pas sur input (glissement en direct). C'est intentionnel et économise des performances :

ÉvénementQuandCe qui se passe
inputChaque changement de valeur pendant le glissementSauver en mémoire + rafraîchir l'affichage de la valeur + mettre à jour wrap.dataset.jzValue. N'exécute PAS le code.
changeRelâchement de la souris / blurSauver en mémoire + exécuter le code avec value comme Number dans le contexte.

Sans cela — glisser de 0 à 100 déclencherait le code 101 fois, chacune avec un reflow CSS. Saccades et jitter. Avec cela — le glissement est gratuit, fire-once au relâchement. Si vous voulez vraiment une mise à jour en direct (p. ex. une variable CSS qui a besoin de réactivité 60fps), utilisez colorValue + une variable CSS mise à jour par JS en mode debounce.

Cas d'usage 1 — contrôleur de luminosité pour n'importe quelle page

Les sites sont trop lumineux dans une nuit sombre. Le mode sombre, c'est « tout ou rien ». Un curseur donne un contrôle précis de 50-150% :

// Action SLIDER "Luminosité"
min: 50, max: 150, step: 5, defaultValue: 100, unit: '%'

// Code (value est un Number) :
document.documentElement.style.filter = `brightness(${value}%)`;
JUSTZIX.log(`Luminosité → ${value}%`);

Glissement → retour en direct via refreshValueDisplay (« 105% ») ; relâchement → filtre CSS appliqué. La prochaine fois sur ce domaine, le curseur se souvient de la valeur. Lecture tard le soir — 65%, tôt le matin — 90%, midi — 110%.

Cas d'usage 2 — curseur de taille de police (accessibilité)

Un vieux site avec une font-size: 11px codée en dur. Le zoom navigateur met tout à l'échelle (la navigation déborde). Un curseur :

// Action SLIDER "Police"
min: 12, max: 24, step: 1, defaultValue: 16, unit: 'px'

// Code :
document.documentElement.style.setProperty('--base-font-size', value + 'px');
document.querySelectorAll('p, li, span, td, div').forEach(el => {
  el.style.fontSize = value + 'px';
});

Plus une règle CSS dans une autre fenêtre : html { font-size: var(--base-font-size); }. Le curseur ne pilote que la base — les proportions en rem restent. Utile pour les sites qui ne respectent pas le zoom navigateur.

Cas d'usage 3 — throttle de vitesse d'animation (debug)

Débogage d'une animation CSS complexe. 1× est trop rapide, pas à pas dans les DevTools perd le flux. Un curseur :

// Action SLIDER "Vitesse anim"
min: 1, max: 20, step: 1, defaultValue: 10, unit: '/10'

// Code :
const factor = 10 / value;  // value 10 = 1×, value 1 = 10× plus lent, value 20 = 2× plus rapide
document.querySelectorAll('*').forEach(el => {
  el.style.animationDuration = (factor) + 's';
  el.style.transitionDuration = (factor * 0.3) + 's';
});
JUSTZIX.log(`Facteur vitesse anim : ${factor}x`);

Glissez à 1 = 10× plus lent, vous voyez chaque frame. Glissez à 20 = 2× plus rapide, vérifiez les chemins rapides. Sans le panneau « rendering » des Chrome DevTools.

Cas d'usage 4 — mise à jour programmatique depuis une autre action

La valeur du curseur est disponible via JZ.value('Luminosité') (renvoie une string depuis wrap.dataset.jzValue) et modifiable via JZ.setValue('Luminosité', 100) — qui dispatche les événements input + change, donc le code se déclenche normalement :

// Dans une autre action BUTTON "Tout réinitialiser" :
JZ.setValue('Luminosité', 100);     // → filtre CSS brightness(100%)
JZ.setValue('Police',     16);      // → réinitialiser la taille de police
JZ.setValue('Vitesse anim', 10);    // → réinitialiser la vitesse d'animation
JUSTZIX.log('Tous les curseurs réinitialisés aux valeurs par défaut.');

JZ.setValue assigne la valeur à input.value + dispatche input + dispatche change — le même flux qu'un glissement manuel. Sans ce correctif (v2.13.33) le curseur aurait dataset.jzValue === null et la mise à jour programmatique ne déclencherait pas le code.

Pièges

Et ensuite

Le SLIDER est un « fader physique » dans l'onglet — zéro overhead, <input> natif, mémoire hybride. Il se marie magnifiquement avec les helpers window.JZ (JZ.setValue pour le contrôle programmatique) et avec TOGGLE3 pour des presets rapides (presets « Vif » / « Normal » / « Tamisé » qui mettent le curseur à 130/100/70 via JZ.setValue).

Installez JustZix et construisez votre premier SLIDER en 30 secondes.

Notez cet article

Aucune note — soyez le premier.

Essayez vous-même

Installez JustZix et collez n'importe quel snippet de cet article. Deux minutes de zéro à une règle fonctionnelle sur tous vos appareils.

Obtenir JustZix

Fonctionnalités · Comment ça marche · Exemples · Cas d'usage