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 sur un DIV contenant d'autres balises


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut MouseOver sur un DIV contenant d'autres balises
    Bonjours

    j'ai un petit soucis avec les "fonctions" mouseover et mouseout sur un Div contenant 2 balises a... voici un exemple simplifié de ce que je veux faire (ne faites pas attention a l'exactitude du code):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="classDiv" onMouseOver="style.backroundColor='red'" onMouseOut="style.backroundColor='white'>
        <a href="URL">nom lien 1</a>
        <a href="URL">nom lien 2</a>
    <div>
    sachant que dans mon CSS j'ai

    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
     
    .classDiv {
        text-align:center;
        border-color: orange;
        border-width: 1px;
    }
     
    .classDiv a{
        color: orange;
        text-decoration: none;
    }
     
    .classDiv a:hover{
        color: black;
        text-decoration: underline;
    }
    donc au final ce que j'attend à avoir est la chose suivante:

    quand le curseur de la souri passe sur le DIV le fond devient rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onMouseOver="style.backroundColor='red
    et quand je le quitte il devient Blanc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onMouseOut="style.backroundColor='white'
    Et quand je passe sur l'un des liens à l'intérieur du DIV, le fond reste donc rouge mais le lien
    , qui au départ est orange non souligné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .classDiv a{
        color: orange;
        text-decoration: none;
    }
    ,devient noir et surligné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .classDiv a:hover{
        color: black;
        text-decoration: underline;
    }
    mon problème et le suivant :
    lorsque je rentre dans le div, le fond change bien de couleur,
    lorsque je passe sur le premier lien c'est tjs bon (soulignement + couleur noir)

    MAIS lorsque je quitte le premier lien pour aller sur le 2nd SANS QUITTER LE DIV..!!!..... le onMouseOut du DIV est "actionné" du coup je repasse sur un fond blanc dans mon div alors que je suis encore dedans.

    j'ai l'impression que le code est mal interprété
    il tombe sur une balise fermante (celle du lien en l'occurrence) et actionne le Mouseout ou lieu de l'actionner sur la balise fermante du DIV...

    que puis-je faire please.......

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 908
    Points
    44 908
    Par défaut
    Bonjour, et merci
    merci parce que je ne savais pas qu'un tel code puisse fonctionner

    (ne faites pas attention a l'exactitude du code):
    et pourtant c'est la que cela pèche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="classDiv" onMouseOver="style.backroundColor='red'" onMouseOut="style.backroundColor='white'>
    - manque un " de fermeture de la chaine après 'white'.
    - backroundColor n'est pas une propriété du CSS mais backgroundColor OUI

    au final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div class="classDiv" onmouseover="this.style.backgroundColor='red'" onmouseout="this.style.backgroundColor='white'">
        <a href="URL">nom lien 1</a>
        <a href="URL">nom lien 2</a>
    <div>
    devrait fonctionner

    Nota:
    - j'ai ajouté this devant le style pour être sûr que c'est la DIV qui est concernée, c'est le merci car cela fonctionne sans
    - j'ai passé les événements en minuscule

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    OK merci pour ta réponse...

    maintenant j'aimerai modifier la partie JS

    à savoir au lieu de modifier la couleur de backGound,
    j'aimerai que lorsque je sort du DIV, il s'efface...
    j'ai pensé mettre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="classDiv" onmouseover="this.style.backgroundColor='red'" onmouseout="this.style.display='none';">
        <a href="URL">nom lien 1</a>
        <a href="URL">nom lien 2</a>
    </div>
    et dans ce cas là il se passe ce que je disais dans mon précédent message à savoir que lorsque je rentre dans le DIV le fond devient bien rouge, lorsque je passe sur le 1er lien il se souligne mais dès que je quitte ce lien le DIV s'efface alors que j'aurais bien aimé avoir la possibilité d'allé sur mon 2nd lien....

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 908
    Points
    44 908
    Par défaut
    j'aimerai que lorsque je sort du DIV, il s'efface...
    mais comment fera tu pour le faire réapparaître?
    Le comportement que tu observes est le comportement normal de diffusion des événements, je pense qu'il faut que tu changes ton approche du problème.

    Tu pourrais y arriver en gérant un timer sur la disparition de la DIV que tu annulerais au passage sur les liens, mais bon!

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Sinon, il faut utiliser l'objet event pour déterminer le relatedTarget ou fromElement et savoir si tu es réellement sorti de la div.

Discussions similaires

  1. Style sur la 1ere DIV contenant d'autre
    Par Vanlen dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 07/12/2010, 09h12
  2. Div contenant d'autres div ?
    Par enrico83600 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 23/12/2009, 19h08
  3. Lien cliquable sur une div contenant un flash
    Par jiojio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/06/2009, 12h08
  4. [CSS 2] interagir sur un div depuis un autre div
    Par steph57535 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 11/04/2009, 16h28
  5. Jointure sur un champ contenant un autre champ
    Par ALEXM dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 26/09/2007, 12h58

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