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 :

Auto scroll top et bottom


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut Auto scroll top et bottom
    Bonjour,

    J'ai fais un code pour faire defiler une liste en bas, alors je me bloque pour retourner en haut DEMO:

    Je veux faire de meme, un defilement pour retourner en haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <ul class="mm" id="list">
        <li>item1</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item3</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item5</li>
        <li>item</li>    
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item8</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>    
        <li>item</li>
        <li>item</li>
        <li>item10</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item</li>
        <li>item15</li>
    </ul>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .mm {
      overflow-y:scroll; 
      height: 150px; 
      border: 1px solid black;
      list-style-type: none;
      padding: 0px;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    var yy = $('.mm').scrollTop();
    console.log(yy);
    var sh	= $('.mm')[0].scrollHeight;
    console.log(sh);
     
     
    $('#list > li').hover(function(e){
    var target = e.target;
    //console.log(target);
    var height = $('ul').height();
    console.log('h '+height);
     
    var scrollHeight = $("#list")[0].scrollHeight;
    console.log(scrollHeight);
     
    var off = $('#list').offset();
    console.log(off);
     
    var offTop = $('#list').offset().top;
    console.log(offTop);
     
    var offLeft = $('#list').offset().left;
    console.log(offLeft);
     
     
    	var mouseX = e.pageX;
      var mouseY = e.pageY;
     
      console.log('x:'+mouseX+' y:'+mouseY+ ' h:'+height+' sh:' +scrollHeight);
     
      if(mouseY > height-10){
     
        $('#list').animate({scrollTop: '+=150px'}, 1500, 'swing');
      }
     
     
     
    });
    Merci a vous

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    pourquoi ne pas faire la condition "if(mouseY > height - 16)" au sein de la fonction callback de animate?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     $('#list > li').mouseenter(function(e) {//mouseenter est plus performante que hover.
      var target = e.target;
      var height = $('ul').height();
      var mouseY = e.pageY;
     
      $('#list').animate(null, function() {
        if (mouseY > height - 16) {//-16 au lieu de -10 pcq les ul ont un margin et un padding de 16px, tu as mis padding:0 au niveau de css mais tu as oublié le margin
          $(this).animate({
            scrollTop: "+=150px"
          }, 1500, 'swing');
     
        } else
          $(this).animate({
            scrollTop: "-=150px"
          }, 1500, "swing");
      });
     
    });

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Oui effectivement ça m'est échappée, merci à vous

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

Discussions similaires

  1. Redimensionner : Resize - Align(Top et Bottom)
    Par smk01 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2007, 12h49
  2. TREE_VIEW & Auto scrolling
    Par noumag dans le forum GTK+ avec C & C++
    Réponses: 10
    Dernier message: 07/08/2007, 15h12
  3. Div à 5px du bord top et bottom
    Par Deallyra dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/06/2007, 14h14
  4. [VBA-E]recherche de lignes TOP et BOTTOM
    Par tangjuncn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2007, 18h07
  5. Auto-scroll d'une zone de texte multi ligne
    Par malek_dz77 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/11/2005, 13h09

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