IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

ScrollTop : Comment faire un retour à n-pixels du Top ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Par défaut ScrollTop : Comment faire un retour à n-pixels du Top ?
    Bonjour à tous,

    J'utilise un script Accordeon dont voici la démo

    J'en suis très content, il fonctionne très bien. J'ai seulement une question à laquelle je ne trouve pas la réponse :

    A l'ouverture de chaque <li>, l'élément s'ouvre et fait un "scroll to" cet élément cliqué. J'aimerais que le scroll s'arrête à 200 pixels (par exemple) du cet élément.
    A force de chercher, j'ai trouvé où ça se passe mais je ne vois pas du tout comment intervenir dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // scrolls to current item or last opened item if current is -1
            _scroll             : function( instance ) {
     
                var instance    = instance || this, current;
     
                ( instance.current !== -1 ) ? current = instance.current : current = instance.$el.find('li.st-open:last').index();
     
                $('html, body').stop().animate({
                    scrollTop   : ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) : instance.$items.eq( current ).offset().top
                }, instance.options.scrollSpeed, instance.options.scrollEasing );
     
            }
    Je sèche, une idée s'il vous plait ?
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    scrollTop : ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) : instance.$items.eq( current ).offset().topC'est ici que ça se passe, explications:

    La propriété css scrollTop dans la méthode animate de jquery permet de faire un "scroll to Top" elle prend une valeur qui indique a quel point elle va "scroll to Top".

    Cette valeur est retourné par un test si un élément est déjà ouvert on calcul la hauteur qui sépare le li du haut de la fenêtre.

    Sinon on prend la valeur stocké à l'initialisation du plug dans chacune des li (supposition)

    Pour répondre précisément à ta question , si tu souhaite ajuster il te suffit de jouer sur la condition avec + 200 ou - 200

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Par défaut
    Citation Envoyé par Darkaurora Voir le message
    Pour répondre précisément à ta question , si tu souhaite ajuster il te suffit de jouer sur la condition avec + 200 ou - 200
    Salut Darkaurora,
    Merci pour ta réponse détaillée

    Mais je ne vois pas où est la condition et où placer les valeurs +200/-200. Tu peux m'indiquer où ça se passe stp ?

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    ça

    ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) : instance.$items.eq( current ).offset().top

    est égal à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( instance.options.oneOpenedItem ) {
      return instance.$items.eq( current ).data( 'offsetTop' )
    } else {
      return instance.$items.eq( current ).offset().top
    }
    donc si tu fais ça:

    ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) - 200 : instance.$items.eq( current ).offset().top - 200
    le "scroll to Top va s'arrêter a 200px du "top"... enfin normalement

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ou avec animate ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    cette condition est déjà dans un animate

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Par défaut
    Citation Envoyé par Darkaurora Voir le message
    ça

    ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) : instance.$items.eq( current ).offset().top

    est égal à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( instance.options.oneOpenedItem ) {
      return instance.$items.eq( current ).data( 'offsetTop' )
    } else {
      return instance.$items.eq( current ).offset().top
    }
    Fallait le savoir ^_^

    Citation Envoyé par Darkaurora Voir le message
    donc si tu fais ça:
    ( instance.options.oneOpenedItem ) ? instance.$items.eq( current ).data( 'offsetTop' ) - 200 : instance.$items.eq( current ).offset().top - 200le "scroll to Top va s'arrêter a 200px du "top"... enfin normalement
    Arf, j'avais mis les valeurs différemment : data( 'offsetTop' -200 ). D'aileurs, je m'aperçois que l'espace entre le signe '-' et '200' est très important, s'il n'y est pas, ça ne marche pas...

    En tout cas ta méthode fonctionne parfaitement, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/08/2006, 17h20
  2. [Javascript]Comment faire un retour chariot dans une chaîne
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/09/2005, 11h24
  3. Comment faire un retour ligne entre des " ??
    Par DrTank dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/05/2005, 09h35
  4. [XSL-FO] Comment faire un retour de chariot
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2005, 07h20
  5. Comment faire un retour a la ligne dans un tableaux Word
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/06/2004, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo