Projet

Général

Profil

Development #45040

JS: scrollY function

Ajouté par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
-
Début:
11 juillet 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Intégrations graphiques Publik - Development #45145: Nouveau composant : back-topFermé15 juillet 2020

Actions

Révisions associées

Révision 94bd9c09 (diff)
Ajouté par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans

js: introduce ComboScrollY global function (#45040)

Launch callbacks when page scroll below or above a limit

Historique

#1

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans

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');
    }
  });

#2

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.

#3

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

#4

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 supprimé
#6

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` ?

#7

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).

#8

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans

#9

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 4 ans

→ ComboScrollY

Done.
J'ai également ajouté un trigger des callbacks au chargement de la function init.

#10

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de Solution proposée à Solution validée
#11

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
#12

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

Formats disponibles : Atom PDF