[RUBY] Comment changer d'images miniatures avec JavaScript

Comment changer d'images miniatures à l'aide de JavaScript

Image ↓

Screenshot from Gyazo

J'ai implémenté le remplacement d'image en utilisant JavaScript!

Procédure

  1. Créez un fichier HTML et collez l'image de l'image
  2. Codage avec css
  3. Écrivez la méthode en cliquant sur l'image avec JavaScript

C'est trop dur, haha, je vais l'écrire et l'expliquer.

Écrire du HTML

<div class="center">
  <div>
   <img src="img1.jpg " id="bigimg">
  </div>
  <ul>
    <li><img src="thumb-img1.jpg " class="thumb" data-image="img1.jpg "></li>
    <li><img src="thumb-img2.jpg " class="thumb" data-image="img2.jpg "></li>
    <li><img src="thumb-img3.jpg " class="thumb" data-image="img3.jpg "></li>
    <li><img src="thumb-img4.jpg " class="thumb" data-image="img4.jpg "></li>
  </ul>
 </div>

Définissez l'élément parent et définissez la balise img qui contient id = "bigimg" directement en dessous. Cela devra être obtenu plus tard avec getElementById, alors ajoutez un attribut. Créez une balise ul et stockez l'image que vous souhaitez afficher dans la vignette de la balise de liste. C'est là qu'intervient l'attribut data-image.

Quel est l'attribut data-image?

Bien qu'il s'agisse de cet attribut, l'attribut data-image n'existe pas, et c'est l'attribut `data-'anything '. (Également appelé attribut de données personnalisé) Pour faire simple, cela ressemble à ceci, cette fois je l'ai nommé image, mais fondamentalement tout va bien.

Raisons d'utiliser l'attribut data- *

Il est utilisé pour incorporer des données dans des balises HTML et lire ou réécrire ses valeurs à partir de Javascript. J'appellerai cet attribut data-image plus tard avec une méthode JavaScript, donc je l'écrirai.

Codage avec CSS

Je pensais que ce serait bien d'omettre cela séparément, mais je vais le coder avec CSS pour le faire ressembler à ça.

section img{
  max-width: 100%;
}
.center{
  margin: 0 auto 0 auto;
  max-width: 90%;
  width: 500px;
}
.center ul{
  display: flex;
  margin: 0;
  padding: 0;
  list-style: none;
}
.center li{
  flex: 1 1 auto;
  margin-right: 8px;
}
li:last-of-type{
  margin-right: 0;
}

Je vais omettre l'explication ici, mais cela ressemble à ce qui suit.

image.png

Bien sûr, cliquer sur l'image ici ne fait rien. ~~ Les oiseaux sont juste entre parenthèses ~~

Écrire du JavaScript

Maintenant, le sujet principal est d'ici. J'écrirai du JavaScript.


const thumbs = document.querySelectorAll('.thumb');
 //sélecteur css'.thub'Et assignez-le aux pouces constants
 console.log(thumbs);  //Assurez-vous que la valeur est stockée une fois dans la console.

image.png

Ce n'est pas grave si les images sont stockées dans un tableau comme celui-ci. J'obtiens le .thumb du sélecteur css avec la méthode querySeleAll.

const thumbs = document.querySelectorAll('.thumb');
  // console.log(thumbs);
thumbs.forEach(function(item,index){
 item.onclick = function(){
  document.geElementById('bigimg').src = this.dataset.image;
 }
});

Il y a une fonction dans thubs.forEach et il y a un paramètre (item, index) dans la fonction. L'élément est l'élément img confirmé sur la console plus tôt, et l'index est le numéro du tableau. Ce qui est réduit, c'est que lorsque l'événement item.click se déclenche, le document.getElementById sur la dernière ligne obtient l'id'bigimg'id et remplace l'attribut src par l'attribut data-image décrit pour la première fois en HTML. Remplacé par l'attribut data- * dans this.dataset.image.

Avec cela, lorsque l'événement de clic se déclenche, l'image de données sera entrée dans "bigimg" et la vignette de bigimg sera modifiée.

Élément obtenu.attribut=valeur;



 Cette fois


#### **`document.geElementById('bigimg').src = this.dataset.image;`**

C'est la partie.

C'était un peu difficile à expliquer vers la fin, mais ça ressemble à ça. Je vais mettre le code source terminé et le terminer!

const thumbs = document.querySelectorAll('.thumb');
  // console.log(thumbs);
  thumbs.forEach(function(item,index){
    item.onclick = function(){
      document.getElementById('bigimg').src = this.dataset.image;
    }
  });
<div class="center">
    <div>
      <img src="img1.jpg " id="bigimg">
    </div>
    <ul>
      <li><img src="thumb-img1.jpg " class="thumb" data-image="img1.jpg "></li>
      <li><img src="thumb-img2.jpg " class="thumb" data-image="img2.jpg "></li>
      <li><img src="thumb-img3.jpg " class="thumb" data-image="img3.jpg "></li>
      <li><img src="thumb-img4.jpg " class="thumb" data-image="img4.jpg "></li>
    </ul>
  </div>

c'est tout! Si vous avez des inquiétudes, laissez un commentaire : kissing_closed_eyes: chu ☆

Recommended Posts

Comment changer d'images miniatures avec JavaScript
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
[rails] Comment publier des images
Comment basculer Tomcat context.xml avec Eclipse WTP
Comment réduire les images Java
Comment numéroter (nombre) avec html.erb
Comment supprimer des images non balisées en masse avec Docker
Comment mettre à jour avec activerecord-import
Comment démarrer avec Slim
Comment entourer n'importe quel caractère avec "~"
Comment utiliser mssql-tools avec Alpine
java Eclips Comment déboguer javaScript
Comment démarrer Camunda avec Docker
Comment changer de version Java avec direnv dans le terminal sur Mac
Comment recadrer une image avec libGDX
Comment ajuster TextPosition avec l'extension de clavier iOS
Comment compiler Java avec VsCode & Ant
[Rails] Comment télécharger des images à l'aide de Carrierwave
[Java] Résumez comment comparer avec la méthode equals
Convertir le langage C en JavaScript avec Emscripten
[Android] Comment gérer les thèmes sombres
Comment utiliser BootStrap avec Play Framework
[Note] Comment démarrer avec Rspec
Comment changer de version de Java sur Mac
Comment faire un contrôle basé sur l'API avec cancancan
Comment réaliser le téléchargement de fichiers avec Feign
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment implémenter TextInputLayout avec la fonction de validation
Comment gérer les erreurs de connexion avec l'appareil
Comment supprimer des données avec une clé externe
Comment tester l'étendue privée avec JUnit
Comment surveiller nginx avec docker-compose avec datadog
Comment gérer les actifs de précompilation a échoué.
Comment basculer entre plusieurs versions de Java
Comment réaliser le téléchargement de fichiers avec Feign
Comment exécuter Blazor (C #) avec Docker
Comment créer un environnement Rails 6 avec Docker
Comment télécharger Oracle JDK 8 rpm avec curl
[Java] Comment tester s'il est nul dans JUnit
Comment se moquer de chaque cas avec Mockito 1x
Comment se moquer de chaque cas avec PowerMock + Mockito1x
Comment tester les interruptions pendant Thread.sleep avec JUnit
Comment utiliser h2db intégré avec Spring Boot
Comment jouer de la voix ou de la musique en utilisant javascript
Comment utiliser le framework Java avec AWS Lambda! ??
Comment enregistrer des images sur Heroku dans S3 sur AWS
Comment créer plusieurs menus déroulants avec ActiveHash
Comment utiliser l'API Java avec des expressions lambda
Comment démarrer avec Eclipse Micro Profile
Comment donner votre image à quelqu'un avec Docker
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
Comment tout insérer en même temps avec MyBatis
[Java] Comment passer de jdk ouvert à jdk oracle
Comment écrire du code de test avec la certification de base