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 :

hover effect à partie de 2 div de même niveau


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Par défaut hover effect à partie de 2 div de même niveau
    Bonjour,
    Dans ma newslist, je voudrai appliquer un effet de survol sur le titre de la news aussi bien en survolant directement ledit titre (h1 a) mais aussi en survolant l'image adjacente.

    Mes connaissances en Js étant limitées ,j'ai mis ce code:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	<article class="art">
    		<figure>
    			<a href="article.html"><img src="01.png"></a>
    		</figure>
    		<div class="txt">
    			<h1><a href="article.html">Title one</a></h1>
    			<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    		</div>
    	</article>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    article {width:400px;height: 200px;margin:0;padding:0;background:azure;}
    figure, .txt {	float:left;}
    figure {width:150px;height:150px;margin:0;}
    figure a{display:block;	width:150px;height:150px;text-decoration:none;}
    figure img {width:150px;height:150px;border:none;}
    .txt {width: 200px;	height:150px;margin-left: 40px;	background:blanchedalmond;}
    .txt h1 a{color:red;text-decoration:none;font-size:16px;}
    .txt h1 a:hover{color:green;}
    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
    	<script type="text/javascript">
    	$(document).ready(function(){
    		$('figure').mouseover(function () {
    			$(this).parent('article.art').find('.txt h1 a').css("color", "green");
    		})
    		.mouseout(function () {
    			$(this).parent('article.art').find('.txt h1 a').css("color", "red");
    		});
    		$('.txt h1').mouseover(function () {
    			$(this).find('a').css("color", "green");
    		})
    		.mouseout(function () {
    			$(this).find('a').css("color", "red");
    		});
     
    	});
    	</script>
    Pourriez-vous me corriger mon code svp ?

  2. #2
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    Je ne vois pas d'erreur dans ton code, as-tu bien pensé à inclure une source de jquery?
    ceci fonctionne parfaitement:
    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
     
    <!Doctype HTML>
    <html>
    <head>
            <style type="text/css">
                    article {width:400px;height: 200px;margin:0;padding:0;background:azure;}
                    figure, .txt {  float:left;}
                    figure {width:150px;height:150px;margin:0;}
                    figure a{display:block; width:150px;height:150px;text-decoration:none;}
                    figure img {width:150px;height:150px;border:none;}
                    .txt {width: 200px;     height:150px;margin-left: 40px; background:blanchedalmond;}
                    .txt h1 a{color:red;text-decoration:none;font-size:16px;}
                    .txt h1 a:hover{color:green;}
            </style>
    </head>
    <body>
            <article class="art">
    		<figure class="figure">
    			<a href="article.html"><img src="01.png"></a>
    		</figure>
    		<div class="txt">
    			<h1><a href="article.html">Title one</a></h1>
    			<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    		</div>
    	</article>
    	<script type="text/javascript" src="jquery-2.2.2.min.js"></script>
    	<script type="text/javascript">
            $(document).ready(function(){
                    $('figure').mouseover(function () {
                            $(this).parent('article.art').find('.txt h1 a').css("color", "green");
                    })
                    .mouseout(function () {
                            $(this).parent('article.art').find('.txt h1 a').css("color", "red");
                    });
                    $('.txt h1').mouseover(function () {
                            $(this).find('a').css("color", "green");
                    })
                    .mouseout(function () {
                            $(this).find('a').css("color", "red");
                    });
     
            });
            </script>
    </body>
    </html>
    à noter qu'il faut pour que l'exemple ici fonctionne avoir jquery-2.2.2.min.js dans le dossier racine, le même que celui de la page html.
    d'autre part tu as un doublon dans ton code:
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        .txt h1 a{color:red; }
        .txt h1 a:hover{color:green;}
    fait quasiment la même chose que
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    $('.txt h1').mouseover(function () {
    			$(this).find('a').css("color", "green");
    		})
    		.mouseout(function () {
    			$(this).find('a').css("color", "red");
    		});
    hormis le fait que dans le second cas, c'est le hover sur le h1 qui déclenche l'évènement

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Par défaut
    Salut ' 01001111',

    Oui ,j'ai inclue jQuery, et pour le doublon c'est noté.
    Je voulais simplement savoir si mon code Js est correct de point de vue syntaxique et voir s'il y a autre manière de faire.

    Merci.

  4. #4
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    oui c'est correct ! Après tu peux faire une animation sur la couleur de la police par exemple, plutôt qu'un changement net.
    je fais en ce moment une librairie qui le permet en traitant les couleurs en rgba et acceptant tout type de représentation standard pour les couleurs, mais je ne pense pas que ce soit d'une utilité énorme.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    pourquoi ne pas simplement utiliser le CSS :hover ?

Discussions similaires

  1. Plusieurs div au même niveau dans un div
    Par tio dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 04/08/2009, 17h22
  2. Slow-hover effect.
    Par Yakuzan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/06/2009, 08h24
  3. Deux div à la même hauteur
    Par [Nean] dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 11/03/2009, 09h41
  4. Réponses: 15
    Dernier message: 30/01/2008, 18h23
  5. [AJAX] Rafraîchir plusieurs div en même temps
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/09/2007, 18h26

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