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 :

[Newbie JS] rollover


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 8
    Points
    8
    Par défaut [Newbie JS] rollover
    Bonjour, je suis en train de réaliser un rollover sur deux images. Quand je survole la première, l'aspect de la deuxième change et quand je passe sur la deuxième l'aspect de la première change aussi.
    Le problème c'est que je suis encore dans html5, css3 et que je peux pas faire ça sans utiliser l'api DOM (du moins si je me trompe pas ?).
    Voici mon code html5 :
    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
    <!DOCTYPE html>
    <html>
     <head>
    	  <meta charset="utf-8"/>
    	  <link rel="stylesheet" href="style.css" />
    	  <title>rollover</title>
     </head>
    <body>
        <div id="images_container">
            <img src="image.png" id="MyImg1">
            <img src="image.png" id="MyImg2">
        </div>
    </body>
    </html>

    Au niveau du css j'ai ça :
    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
    body {
        background-color: rgb(40, 40, 50);
        margin: 0px;
        padding-top: 0px;
    }
     
    body, html {
        height: 100%;
    }
     
    #images_container {
        position: relative;
        margin: auto;
        width: 1000px;
        height: 100%;
        background-color: white; 
    }
     
    #images_container img {
        position: absolute;
        top: 40%;
        filter: blur(0px;)
        transition-property: filter;
        transition-duration: 750ms;
        transition-timing-function: ease-in-out;
    }
     
    #images_container img:first-child {
        left: 140px;
    }
     
    #images_container img:last-child {
        right: 140px;
    }

    et voilà le css que j'attend au niveau de rollover :
    filter: blur(5px);
    transform: scale(1.05);

    Genre quand je passe la sourie sur la première image la deuxième prend le css ci-dessus et vice-versa.
    'ai commencé à apprendre le JS(ça fait à peine quelques heures), à utiliser DOM mais c'est tellement frai que je vois pas comment je pourrait procéder sans faire des trucs horribles. Je suis preneur de toutes suggestions ou raisonnement pour y parvenir. Merci pour ceux qui ont pris la peine de me lire ou de me répondre.

  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
    On peut faire ça en CSS uniquement, mais que pour la seconde image lorsqu'on survole la première image : #images_container img:hover ~ img La raison est qu'il n'y a pas de sélecteur CSS qui permette de revenir "en arrière" dans la lecture DOM, pour des raisons de performance. Ça viendra peut-être en CSS4: http://dev.w3.org/csswg/selectors4/#subject

    Démo : http://codepen.io/anon/pen/eJejJG

    Pour que cela marche dans les deux sens, il faut effectivement JavaScript et l'API du DOM. Voilà un exemple avec les attributs onmouseover et onmouseout : http://codepen.io/anon/pen/QyOBdG ; pas forcément le plus "propre", mais le plus simple à comprendre pour un novice en JS.
    One Web to rule them all

  3. #3
    Futur Membre du Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour votre aide , je vais prendre mon temps pour comprendre le code.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    Bonjour,
    Citation Envoyé par SylvainPV
    La raison est qu'il n'y a pas de sélecteur CSS qui permette de revenir "en arrière" dans la lecture DOM
    on peut toujours "tricher" en déplaçant "l'écouteur", :hover, sur le parent et en maintenant un "écouteur" sur l'enfant pour faire croire que l'on remonte.
    avec cette structure HTML
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="image">
      <img src="http://club.developpez.com/webdesign/Rubriques/Web/CSS/logo_outils_css.gif">
      <img src="http://club.developpez.com/webdesign/Rubriques/Web/CSS/logo_livres_css_old.gif">
    </div>
    et ce CSS par exemple
    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
    #image {
      display:inline-block;
      border:1px solid #abc;
    }
    #image img{
      border:2em solid #cde;
      width:200px;
      height:175px;
      float:left;
    }
    /* écouteur sur le parent */
    #image:hover img{
      transform:scale(1.05);
    }
    /* écouteur sur l'enfant */
    #image img:hover{
      transform:scale(1);
    }
    l'ilusion est parfaite sur les navigateurs récents.

  5. #5
    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
    Tu arriverais à l'appliquer sur son exemple NoSmoking ? D'après son CSS les images sont bien séparées et le cadre parent est bien plus grand que les images elles-mêmes, donc je ne pense pas qu'un hover sur le parent soit une solution ici.
    One Web to rule them all

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

Discussions similaires

  1. [newbie en CSS] Prob image disparait au rollover !
    Par Dsphinx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/09/2006, 00h11
  2. [QUESTION DE NEWBIE] et delphi la dedans?
    Par Wakko2k dans le forum CORBA
    Réponses: 3
    Dernier message: 01/07/2003, 15h58
  3. [newbie] date ...
    Par nawac dans le forum Débuter
    Réponses: 3
    Dernier message: 06/05/2003, 10h29
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29

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