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

Mise en page CSS Discussion :

Déplacement horizontal de div selon le scroll


Sujet :

Défilement en CSS

  1. #1
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut Déplacement horizontal de div selon le scroll
    Bonjour à tous,

    Après quelques recherches sur ce forum je suis toujours bredouille,

    En effet, je cherche à "faire arriver" horizontalement (par la droite par exemple) une (ou plusieurs) div à mon écran en fonction du scroll de ma page. Est-il possible en CSS de réaliser ceci, ou du javascript est-il forcément obligatoire (et si c'est le cas, comment faire ?, je suis novice en JS).

    Merci pour votre aide...

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    en CSS pur non, il va te falloir un peu de JavaScript pour tester la position du scroll de la fenêtre et en fonction de celle-ci lancer le déplacement de tes éléments via CSS et/ou JavaScript.

  3. #3
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut
    OK merci pour cet info,

    Et donc comment en css uniquement, je déplace la div ? Je joue sur le margin-left (ou right) ou y a-t-il un autre moyen ?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par NoSmoking Voir le message
    en CSS pur non...
    Quel mot n'as-tu pas compris ?


    En CSS3, il existe néanmoins les transitions :



    Mais ça ne dépendra pas du scroll.

  5. #5
    Membre régulier
    Avatar de Miksimus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 84
    Points
    84
    Par défaut
    Ha heu oui en effet tu avais déjà répondu à ma question :-D
    Merci pour les liens, je vais potasser tout ça :-)

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut Animation CSS simple, exemples
    En complément, voici un petit florilège, non exhaustif, de ce que l'on peut faire.

    • Exemple au survol

    L'animation consiste à faire apparaître l'image au survol de l'élément conteneur puis à faire disparaître celle-ci lorsque l'on quitte la zone.

    L'animation est géré par le CSS avec l'utilisation du sélecteur #cadre:hover img et en utilisant la propriété transition affectée à l'image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #cadre img {
      position: absolute;
      right: -100%;
      transition: all .5s;
    }
    #cadre:hover img {
      right: 0;
    }
    • Exemple sur action

    L'animation consiste à faire apparaître l'image sur une action puis à la faire disparaître sur une autre action.

    L'animation est déclenchée en ajoutant/supprimant une classe à l'image, ceci est géré en JavaScript en utilisant la méthode element.classList.toggle().
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // ajout/suppression de la class au click ou autre action
    oBtn.addEventListener('click', function (e) {
      oImg.classList.toggle('visible');
    });
    L'animation proprement dite est gérée par le CSS.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #cadre img.visible {
      right: 0;
    }
    • Exemple va et vient sur action

    L'animation consiste à faire apparaître puis disparaître l'image.

    L'animation est déclenchée en ajoutant une classe à l'image, ceci est géré en JavaScript en utilisant la méthode element.classList.add() puis en la supprimant en fin d'animation.
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // ajout de la class au click ou autre action
    oBtn.addEventListener('click', function (e) {
      oImg.classList.add('show-hide');
    });

    La suppression en fin d'animation se fait en plaçant un écouteur animationend sur l'image, et en utilisant la méthode element.classList.remove().
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // supprime la class en fin d'animation
    oImg.addEventListener('animationend', function(e){
      this.classList.remove('show-hide');
    });

    L'animation proprement dite est gérée par le CSS en utilisant la propriété animation et une règle @keyframes.
    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
    #cadre img.show-hide {
      animation: show-hide 1s linear;
    }
    @keyframes show-hide {
      0% {
        right: -100%;
      }
      40% {
        right: 0;
      }
      60% {
        right: 0;
      }
      100% {
        right: -100%;
      }
    }
    • Exemple pour voir
    Code html : 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Animation CSS simple</title>
    <meta name="Author" content="NoSmoking">
    <style>
    html, body {
      margin: 0;
      padding: 0;
      font: 1em/1.25 Verdana,sans-serif;
      background: #FFF;
    }
    #main {
      margin: auto;
      max-width: 60em;
    }
    h1, h2, h3 {
      margin: .25em 0;
      color: #069;
    }
    section {
      margin: 0 1em 2em;
    }
    button {
      min-width: 10em;
      font: inherit;
      cursor: pointer;
    }
    button.on:before {
      content: "Affiche ";
    }
    button.off:before {
      content: "Masque ";
    }
    [id^=cadre] {
      position: relative;
      width: 12.5em;
      height: 12em;
      border: 1px solid #ccc;
      overflow: hidden;
    }
    [id^=cadre] img {
      position: absolute;
      right: -100%;
      transition: all .5s;
    }
    #cadre-1:hover img,
    #cadre-2 img.visible {
      right: 0;
    }
    #cadre-3 img.show-hide {
      animation: show-hide 1s linear;
    }
    @keyframes show-hide {
      0% {
        right: -100%;
      }
      40% {
        right: 0;
      }
      60% {
        right: 0;
      }
      100% {
        right: -100%;
      }
    }
    code {
      color : #00F;
      color: #217ac0;
      font: inherit;
    }
    </style>
    </head>
    <body>
    <div id="main">
      <h1>Animation CSS simple</h1>
      <section>
        <h2>Exemple au survol</h2>
        <div id="cadre-1">
          <img src="http://club.developpez.com/webdesign/Rubriques/Web/CSS/logo_outils_css.gif" alt="">
        </div>
      </section>
     
      <section>
        <h2>Exemple sur action</h2>
        <div id="cadre-2">
          <img src="http://club.developpez.com/webdesign/Rubriques/Web/CSS/logo_outils_css.gif" alt="">
        </div>
        <p><button class="on">image</button></p>
      </section>
     
      <section>
        <h2>Exemple va et vient sur action</h2>
        <div id="cadre-3">
          <img src="http://club.developpez.com/webdesign/Rubriques/Web/CSS/logo_outils_css.gif" alt="">
        </div>
        <p><button>show-hide</button></p>
      </section>
    </div>
    <script>
    var oBtns = document.querySelectorAll('button');
    var oImgs = document.querySelectorAll('img');
    // ajout/suppression de la class au click ou autre
    oBtns[0].addEventListener('click', function () {
      this.classList.toggle('on');
      this.classList.toggle('off');
      oImgs[1].classList.toggle('visible');
    });
    // ajout de la class au click ou autre action
    oBtns[1].addEventListener('click', function (e) {
      oImgs[2].classList.add('show-hide');
    });
    // supprime la class en fin d'animation
    oImgs[2].addEventListener('animationend', function (e) {
      this.classList.remove('show-hide');
    });
    </script>
    </body>
    </html>

    Ton cas se situerait plutôt sur l'exemple 2.

    [EDIT] Correction lien sur image

    A lire : Cours et tutoriels pour apprendre CSS

Discussions similaires

  1. [CSS 3] alignement horizontal de divs illimité sans scroll
    Par hey16ar dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 02/03/2011, 14h35
  2. [script.aculo.us] Drag and drop dans une div avec un scroll horizontal
    Par ridan dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 21/07/2009, 19h14
  3. [HTML] Placement de DIV # selon IE ou FF
    Par cbroissa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/04/2006, 15h59
  4. Déplacement d'un div
    Par krfa1 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 21/10/2005, 11h02
  5. bouger une div selon les coordonnées de la souris
    Par 10-nice dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/09/2005, 15h31

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