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

JavaScript Discussion :

Scroll horizontal sur une div en milieu de page


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 45
    Points
    45
    Par défaut Scroll horizontal sur une div en milieu de page
    Bonjour à tous,

    Je travaille actuellement sur un site parallax et je rencontre la problématique suivante :
    Mon client aimerait que lorsqu'on arrive sur une section du site (au milieu de la home page en parallax), le scroll soit bloqué verticalement et que des éléments défilent horizontalement (vitesse de défilement contrôlée par le scroll). Une fois tous que tous les éléments ont défilé horizontalement, le scroll est vertical est réactivé pour passer aux sections suivantes.
    J'espère être suffisamment clair...

    Pour le scroll horizontal, je connais le plugin jQuery jInvertScroll qui correspond à mon besoin, mais malheureusement tous les éléments à faire défiler horizontalement doivent être fixe (position:fixed), il est donc assez difficile de l'utiliser au milieu d'une page..

    Avez-vous des idées pour me passer un coup de main (astuces, techno, etc...) ?

    Merci pour vos retour !

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Citation Envoyé par eddynamique Voir le message
    tous les éléments à faire défiler horizontalement doivent être fixe (position:fixed)
    Non ça n'a pas de sens, un élément en position:fixed ne défile pas par définition.

    Il faut en JavaScript alterner entre une position absolute et une position fixed pour ton conteneur qui contient les éléments à défiler horizontalement, selon la position du scroll vertical actuel.
    Quand il est en position absolue, il défile au scroll. Quand il est en fixed, il reste bloqué mais la page défile toujours.
    En jQuery ça donnerait un truc de ce genre :

    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
    // on va dire que le défilement horizontal a lieu entre 1000px < scrollTop < 2000px// cela implique que #horizontalSliderContainer soit contenu dans un élément de 1000px de haut
    // pour laisser l'espace vide nécessaire
     
    var hContainer = $("#horizontalSliderContainer");
    hContainer.parent().css("height", "1000px");
     
     
    $(window).scroll(function(){
        var scrollTop = $(window).scrollTop();    
     
        if(scrollTop >= 1000 && scrollTop < 2000){
            if(hContainer.css("position") !== "fixed"){
                hContainer.css({
                    "position": "fixed",
                    "top": 0
                });
            }
            // on suppose ici que l'espace total de défilement horizontal fait 1000px; sinon il faut appliquer un coefficient
            hContainer.css("transform","translateX(-" + (scrollTop - 1000) + "px)");
        } else if(hContainer.css("position") === "fixed"){
            hContainer.css({
                "position": "absolute",
                "top": scrollTop < 1000 ? 1000 : 2000
            });
        }
    });
    J'ai une démo fonctionnelle ici :

    http://jsbin.com/livofesaxipa/1/edit?html,css,js,output

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 45
    Points
    45
    Par défaut
    Merci pour les explications, j'y vois un peu plus clair sur le fonctionnement du défilement horizontal.
    Et merci beaucoup pour la démo, ça correspond bien à mon besoin, je devrais pouvoir m'en tirer avec ça !

    Bonne journée !

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

Discussions similaires

  1. [Débutant] Appliquer un Scroll horizontal sur une image
    Par pra3t0r dans le forum Windows Phone
    Réponses: 3
    Dernier message: 03/04/2012, 11h30
  2. [script.aculo.us] Scroll auto sur une div
    Par flashnet dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 16/07/2010, 22h20
  3. scroll (positionnement) sur une liste dans DIV de taille fixe
    Par Heretic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/05/2010, 16h26
  4. Comment faire un position:relative sur une div précise de la page ?
    Par Alexandrebox dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2009, 22h33

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