Development #45040
JS: scrollY function
0%
Description
combo.public.js ajoute une class 'scrolled' au body lorsque le scrollY est supérieur à zero
J'ai besoin d'un code équivalent pour le composant "back-top" : pouvoir lancer une function JS si le scrollY est au-dessus ou en dessous d'une limite.
Besoins :
1- pouvoir définir une limite
2- lancer un callback quand le scroll passe la limite.
Je propose de créer une function globale réutilisable.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
- Fichier 0001-JS-introduce-combo_scrollY-global-function-45040.patch 0001-JS-introduce-combo_scrollY-global-function-45040.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je propose une syntaxe du type
new Combo_scrollY({
limit: 250 // int, default 0,
below: function(){}, // callback below function
above: function(){} // callback above function
});
Et donc le code d'ajout de class CSS au body :
/* add a scrolled class to body once the user scrolled the page a bit */ var body_is_scrolled = new Combo_scrollY({ above: function(){ $('body').removeClass('scrolled'); }, below: function(){ $('body').addClass('scrolled'); } });
Mis à jour par Frédéric Péters il y a presque 4 ans
Je préférerais sans la majuscule à Combo (et moins fort, avec _y plutôt que Y).
La documentation parle de combo_scrollTY avec un T en trop.
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
- Fichier 0001-JS-introduce-combo_scrollY-global-function-45040.patch ajouté
Combo_ est en majuscule car j'utilise la function comme constructeur que j'instancie avec l'opérateur `new`.
C'est par convention que l'on met une majuscule aux constructeurs, pour les différencier des fonctions.
L'idée étant de pouvoir setter les valeurs appliqués facilement
Exemple avec le code pour un composant back-top
var backTop_scroll_Y = new Combo_scroll_Y({ limit: 200, below: function(){ backTop.classList.add('below-scroll-limit'); }, above: function(){ backTop.classList.remove('below-scroll-limit'); } });
Si pour un thème, la limit de 200 doit être modifiée, c'est alors possible par.
backTop_scroll_Y.options.limit = 800;
et idem pour les callbacks.
Mais autant aller au bout du pattern constructor et de passer en prototype les fonctions communes.
Update du patch
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
- Fichier
0001-JS-introduce-combo_scrollY-global-function-45040.patchsupprimé
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
Pour le moment, le constructeur fonctionne uniquement si les callback "above" et "below" sont définis (en tant que fonction).
Je me demande si je test leur existence (et leur type ?) avant de les exécuter ou si je fixe une fonction par défaut dans l'objet `defaults` ?
Mis à jour par Frédéric Péters il y a presque 4 ans
C'est par convention que l'on met une majuscule aux constructeurs, pour les différencier des fonctions.
Ça se fait alors de totalement le mettre en camel case ? Parce que c'est surtout le mélange majuscules et underscores qui me chagrine. (→ ComboScrollY).
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
- Lié à Development #45145: Nouveau composant : back-top ajouté
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans
- Fichier 0001-JS-introduce-combo_scrollY-global-function-45040.patch 0001-JS-introduce-combo_scrollY-global-function-45040.patch ajouté
→ ComboScrollY
Done.
J'ai également ajouté un trigger des callbacks au chargement de la function init.
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 94bd9c092993e9ed24b90dd8b9809eebed27b344 Author: Thomas JUND <tjund@entrouvert.com> Date: Sat Jul 11 12:48:56 2020 +0200 js: introduce ComboScrollY global function (#45040) Launch callbacks when page scroll below or above a limit
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
js: introduce ComboScrollY global function (#45040)
Launch callbacks when page scroll below or above a limit