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 :

Mouseover s'appelle tout le temps


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut Mouseover s'appelle tout le temps
    Bonjour à tous,

    J'essaye de faire un simple effet de flipping qui se retourne que quand on passe sur l'image.
    Le problème, bien que le retournement soit appelé dans le OnMouseOver, est que l'image se retourne quand je bouge sur celle-ci, pas que quand je rentre....

    Voici mon code :

    Code CSS : 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
    #flipping{
        position: relative;
        width:400px;
        height:400px;
        top:100px;
        left:100px;
        border:solid 1px black;
        perspective:600;   /* !! distance à laquelle on voit l'animation*/
    }  
    .back{
        transform: rotateY(-180deg);  
    }
    #flipping:hover .back{
        /*     transform: rotateY(0deg);*/
    }
    #flipping:hover .front{
        /*    transform: rotateY(180deg);  */             
    }
    .back img,.front img{
        border-radius: 10px;
        box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.75);
        width:100%;
        height:100%;
    }
    .back,.front{
        position: absolute;
        backface-visibility: hidden;  /* !! caché l'arrière*/
        transition:all 0.7s ease-in;
    }
    .contenu{
        position:absolute;
        left:700px;
        top:110px;
        width:400px;
        height:400px;
        border:solid 1px black;
        background-color: rgba(50,50,50,0.75);
    }

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var bool = true;
    function Mouseover(obj){  
        var back = obj.getElementsByClassName("back");
        var front =obj.getElementsByClassName("front");
        if (bool === true){
            back[0].style.transform="rotateY(0deg)";
            front[0].style.transform="rotateY(180deg)"; 
            bool=false;
        }else{
            back[0].style.transform="rotateY(180deg)";
            front[0].style.transform="rotateY(0deg)";    
            bool=true;
        }
    }

    et le HTML :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="flipping" onmouseover="Mouseover(this)">
        <div class="back"><img src="ete.png" alt="été"></div>
        <div class="front"><img src="automne.png" alt="automne"></div>
    </div>

    Quelqu'un voit-il le problème??

  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,
    ton mouseover est perdu/repris pendant la transformation, mais je ne vois pas pourquoi tu ne fais pas cela directement en CSS3 !

  3. #3
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Bonsoir et merci NoSmoking

    j'ai compris plus tard que le mouseover est appelé quand l'image tourne, provoquant mon problème... (comme tu le dis très justement d'ailleurs)
    J'ai donc créé un bloc de même taille et même position que j'ai placé au dessus, et j'ai utilisé son onmouseover.
    C'est pas très propre mais ça marche...

    mais je ne vois pas pourquoi tu ne fais pas cela directement en CSS3
    Je n'ai tout simplement pas réussi à provoqué le retournement que quand la souris arrive sur l'image, pas quand elle en ressort....
    Aurais-tu une idée?

  4. #4
    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
    Certes si tu ne souhaites qu'un flip, je trouve l'idée un peu surprenante, tu ne peux le faire avec CSS.
    Pour la méthode il suffit dans la fonction mouseover désaffecter celle ci de la sorte elle ne se reproduira plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Mouseover(obj){
      obj.onmouseover=function(){};  // annule la fonction
      var back = obj.getElementsByClassName("back");
      // la suite du code

  5. #5
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Pour la méthode il suffit dans la fonction mouseover désaffecter celle ci de la sorte elle ne se reproduira plus.
    C'est pas mal du tout cette méthode, un grand merci à toi!!

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

Discussions similaires

  1. Un script qui ne s'appelle pas tout le temps
    Par omar24 dans le forum jQuery
    Réponses: 5
    Dernier message: 21/04/2011, 10h51
  2. [AJAX] [Firefox] send n'est pas appelée tout le temps
    Par MademoiselleL dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2007, 15h16
  3. La POO tout le temps et partout, vraiment ?
    Par segushi dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 19/05/2005, 20h24
  4. [TextField] taper des chiffres...tout le temps...
    Par Piolet dans le forum Composants
    Réponses: 5
    Dernier message: 12/04/2005, 10h12
  5. [Interface] Appeller toutes les méthodes héritées d'un class
    Par thibaut.d dans le forum Général Java
    Réponses: 4
    Dernier message: 25/01/2005, 08h42

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