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 :

Cliquer sur une image pour qu'elle s'agrandisse dans une fenêtre popup


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Par défaut Cliquer sur une image pour qu'elle s'agrandisse dans une fenêtre popup
    Bonjour,

    J'ai suivi ce tutoriel qui fonctionne très bien. C'est exactement ce que je cherche.
    https://www.w3schools.com/howto/howt...dal_images.asp
    Simplement, j'aimerais appliquer ce dispositif à plusieurs images qui se suivent sur la même page. J'ai donc cc le code html plusieurs fois en changeant juste la source de l'image. Lorsque je charge ma page, l'effet de s'agrandir dans une fenêtre popup ne fonctionne que pour la première. Les autres ne réagissent pas. J'imagine donc que le code JavaScript n'est relié qu'à cette première image.

    Je cherche donc une idée pour intervenir sur ce code pour qu'il s'applique à toutes mes images.

    Mille mercis

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    Bonjour,

    Tu as juste a rajouter les images pas besoin de tout recopier
    Essaye avec ceci :
    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
     
    <img class="myImg" src="" alt="Trolltunga, Norway" width="300" height="200">
    <img class="myImg" src="" alt="Trolltunga, Norway" width="300" height="200">
    <img class="myImg" src="" alt="Trolltunga, Norway" width="300" height="200">
     
    <!-- The Modal -->
    <div id="myModal" class="modal">
     
      <!-- The Close Button -->
      <span class="close">&times;</span>
     
      <!-- Modal Content (The Image) -->
      <img class="modal-content" id="img01">
     
      <!-- Modal Caption (Image Text) -->
      <div id="caption"></div>
    </div>

    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
    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
     
    .myImg {
        border-radius: 5px;
        cursor: pointer;
        transition: 0.3s;
    }
     
    .myImg:hover {opacity: 0.7;}
     
    /* The Modal (background) */
    .modal {
        display: none; /* Hidden by default */
        position: fixed; /* Stay in place */
        z-index: 1; /* Sit on top */
        padding-top: 100px; /* Location of the box */
        left: 0;
        top: 0;
        width: 100%; /* Full width */
        height: 100%; /* Full height */
        overflow: auto; /* Enable scroll if needed */
        background-color: rgb(0,0,0); /* Fallback color */
        background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
    }
     
    /* Modal Content (Image) */
    .modal-content {
        margin: auto;
        display: block;
        width: 80%;
        max-width: 700px;
    }
     
    /* Caption of Modal Image (Image Text) - Same Width as the Image */
    #caption {
        margin: auto;
        display: block;
        width: 80%;
        max-width: 700px;
        text-align: center;
        color: #ccc;
        padding: 10px 0;
        height: 150px;
    }
     
    /* Add Animation - Zoom in the Modal */
    .modal-content, #caption { 
        animation-name: zoom;
        animation-duration: 0.6s;
    }
     
    @keyframes zoom {
        from {transform:scale(0)} 
        to {transform:scale(1)}
    }
     
    /* The Close Button */
    .close {
        position: absolute;
        top: 15px;
        right: 35px;
        color: #f1f1f1;
        font-size: 40px;
        font-weight: bold;
        transition: 0.3s;
    }
     
    .close:hover,
    .close:focus {
        color: #bbb;
        text-decoration: none;
        cursor: pointer;
    }
     
    /* 100% Image Width on Smaller Screens */
    @media only screen and (max-width: 700px){
        .modal-content {
            width: 100%;
        }
    }

    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
    15
    16
    17
    18
    19
    20
    21
     
    // Get the modal
    var modal = document.getElementById('myModal');
     
    // Get the image and insert it inside the modal - use its "alt" text as a caption
    var img = document.getElementsByClassName('myImg')[0];
    var modalImg = document.getElementById("img01");
    var captionText = document.getElementById("caption");
    img.onclick = function(){
        modal.style.display = "block";
        modalImg.src = this.src;
        captionText.innerHTML = this.alt;
    }
     
    // Get the <span> element that closes the modal
    var span = document.getElementsByClassName("close")[0];
     
    // When the user clicks on <span> (x), close the modal
    span.onclick = function() { 
      modal.style.display = "none";
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Par défaut
    Merci pour ta réponse. Je n'arrive malheureusement toujours pas à faire fonctionner.

    Si j'analyse ce que tu proposes, c'est de simplement traiter "myImg" comme un élément class plutôt que id dans les trois codes ?

    Si j'applique ce changement effectivement dans les trois codes, alors il n'y a plus rien qui s'ouvre en pop-up. Le JavaScript semble ne pas répondre à "ClassName".

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    Je t'ai ré écris le code, leur site est dépassé^^
    fonctionnel à 100%


    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
     
    <div>
    <img class="myImg" src="image1.jpg" alt="bonjourajax" width="300" height="200">
    <img class="myImg" src="image2.jpg" alt="Trolltunga" width="300" height="200">
    <img class="myImg" src="image3.jpg" alt="Trolltunga" width="300" height="200">
    <img class="myImg" src="image4.jpg" alt="Trolltunga" width="300" height="200">
    <img class="myImg" src="image5.jpg" alt="Trolltunga" width="300" height="200">
    </div>
     
    <div id="myModal" class="modal">
      <span class="close">&times;</span>
      <img class="modal-content" id="img01">
      <div id="caption"></div>
    </div>

    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
    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
     
    /* Style the Image Used to Trigger the Modal */
    .myImg {
        border-radius: 5px;
        cursor: pointer;
        transition: 0.3s;
    }
     
    .myImg:hover {opacity: 0.9;}
     
    /* The Modal (background) */
    .modal {
        display: none; /* Hidden by default */
        position: fixed; /* Stay in place */
        z-index: 1; /* Sit on top */
        padding-top: 100px; /* Location of the box */
        left: 0;
        top: 0;
        width: 100%; /* Full width */
        height: 100%; /* Full height */
        overflow: auto; /* Enable scroll if needed */
        background-color: rgb(0,0,0); /* Fallback color */
        background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
    }
     
    /* Modal Content (Image) */
    .modal-content {
        margin: auto;
        display: block;
        width: 80%;
        max-width: 700px;
    }
     
    /* Caption of Modal Image (Image Text) - Same Width as the Image */
    #caption {
        margin: auto;
        display: block;
        width: 80%;
        max-width: 700px;
        text-align: center;
        color: #ccc;
        padding: 10px 0;
        height: 150px;
    }
     
    /* Add Animation - Zoom in the Modal */
    .modal-content, #caption { 
        animation-name: zoom;
        animation-duration: 0.6s;
    }
     
    @keyframes zoom {
        from {transform:scale(0)} 
        to {transform:scale(1)}
    }
     
    /* The Close Button */
    .close {
        position: absolute;
        top: 15px;
        right: 35px;
        color: #f1f1f1;
        font-size: 40px;
        font-weight: bold;
        transition: 0.3s;
    }
     
    .close:hover,
    .close:focus {
        color: #bbb;
        text-decoration: none;
        cursor: pointer;
    }
     
    /* 100% Image Width on Smaller Screens */
    @media only screen and (max-width: 700px){
        .modal-content {
            width: 100%;
        }
    }

    Dans ton html tu rajoutes ca :
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
     
    <script type="text/javascript">
    $(document).ready(function() {
      var modal = $('#myModal')
      var span = $(".close")  
      var modalImg = $("#img01")
      var captionText = $("#caption")
     
      var img = $('.myImg')
     
     img.click(function(){
          modal.css('display', 'block')
          modalImg.attr('src', this.src)
          captionText.html(this.alt)
      });
     
      span.click(function() {
        modal.css('display', 'none')
    	});
    });
    </script>

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Par défaut
    Splendide, ça fonctionne à merveille. Merci beaucoup

  6. #6
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    D'acc parfait

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 909
    Par défaut
    Salut,

    C'est quand même un peu dommage d'utiliser JQuery juste pour ça...
    C'est je pense assez simple d'adapter le code initial en JS pur...

    ...

  8. #8
    Invité de passage
    Homme Profil pro
    Webdesigner
    Inscrit en
    Septembre 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2023
    Messages : 1
    Par défaut Même chose en JS pur
    Voilà le code en JS pur, je pense que ça pourrait en intéresser certains :
    (je me suis permis de retirer le caption de mon côté je n'en avais pas besoin)

    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
    <img class="myImg" src="image-1.png">
       <div class="myModal modal">
          <span class="close">&times;</span>
          <img class="modal-content">
       </div>
     
    <img class="myImg" src="image-2.png">
       <div class="myModal modal">
          <span class="close">&times;</span>
          <img class="modal-content">
       </div>
     
    <img class="myImg" src="image-3.png">
       <div class="myModal modal">
          <span class="close">&times;</span>
          <img class="modal-content">
       </div>
    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
    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
    .myImg {
        border-radius: 5px;
        cursor: pointer;
        transition: 0.3s;
      }
     
    .myImg:hover {opacity: 0.7;}
     
    .modal {
        display: none;
        position: fixed;
        z-index: 20;
        padding-top: 100px;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%; 
        overflow: auto; 
        background-color: rgb(0,0,0); 
        background-color: rgba(0,0,0,0.8); 
    }
     
     
    .modal-content {
        margin: 90px auto;
        display: block;
        width: 80%;
        max-width: 1080px;
    }
     
     
    .modal-content {  
        -webkit-animation-name: zoom;
        -webkit-animation-duration: 0.6s;
        animation-name: zoom;
        animation-duration: 0.6s;
    }
     
    @-webkit-keyframes zoom {
        from {-webkit-transform:scale(0)} 
        to {-webkit-transform:scale(1)}
    }
     
    @keyframes zoom {
        from {transform:scale(0)} 
        to {transform:scale(1)}
    }
     
     
    .close {
        position: absolute;
        top: 15px;
        right: 35px;
        color: #f1f1f1;
        font-size: 40px;
        font-weight: bold;
        transition: 0.3s;
    }
     
    .close:hover,
    .close:focus {
        color: #bbb;
        text-decoration: none;
        cursor: pointer;
    }
     
     
    @media only screen and (max-width: 700px){
        .modal-content {
            width: 100%;
        }
    }

    Et pour le JS :
    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
    18
    19
    20
    21
    22
    var modal = document.querySelectorAll(".myModal");
     
     
    var img = document.querySelectorAll(".myImg");
    var modalImg = document.querySelectorAll(".modal-content");
     
    for (let i = 0; i < img.length; i++) {
     
        img[i].addEventListener('click', function(){
            modal[i].style.display = "block";
            modalImg[i].src = this.src;
        })
     
        var span = document.querySelectorAll(".close");
        span[i].addEventListener('click', function() { 
            modal[i].style.display = "none";
        })
     
        modal[i].addEventListener('click', function(){
            modal[i].style.display = "none";
        })
    }
    Voilà j'espère que ça pourra aider !

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    @Stryteker :

    malgré le déterrage de plus de cinq ans, je dirais qu’il n'est peut-être pas utile de créer autant de « modal » qu'il y a d'images.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2012, 04h48
  2. [XL-2007] cliquer sur l'image pour la remplacer
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/09/2009, 15h18
  3. Redimensionner une image pour qu'elle rentre dans un toggle button
    Par Bloodista dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 05/06/2009, 15h34
  4. redimensionner une image pour qu'elle soit carrée
    Par SmileSoft dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/09/2008, 16h28
  5. [FLASH 5]un bouton dans une image pour revenir sur une scene
    Par patato valdes dans le forum Flash
    Réponses: 7
    Dernier message: 28/04/2004, 20h21

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