Maison >interface Web >js tutoriel >Comment utiliser JavaScript pour implémenter la disposition du flux d'images en cascade ?

Comment utiliser JavaScript pour implémenter la disposition du flux d'images en cascade ?

WBOY
WBOYoriginal
2023-10-20 15:30:50859parcourir

如何使用 JavaScript 实现图片瀑布流布局?

Comment utiliser JavaScript pour implémenter la disposition du flux d'images en cascade ?

Introduction :
Avec la popularité des médias sociaux, la demande de photos continue d’augmenter. La disposition en cascade d'images est un moyen populaire d'afficher des images, qui permet aux images d'être disposées de manière adaptative à différentes hauteurs et largeurs, présentant ainsi un effet plus beau et plus intéressant. Cet article explique comment utiliser JavaScript pour implémenter une mise en page simple en cascade d'images et fournit des exemples de code spécifiques.

1. Principe de mise en page
Le principe de base de la mise en page en cascade d'images est de disposer des images de différentes tailles dans chaque colonne en séquence pour obtenir une mise en page adaptative. Pour atteindre cet objectif, nous pouvons utiliser JavaScript pour calculer dynamiquement la hauteur de chaque colonne et ajouter de nouvelles images à la colonne ayant la plus petite hauteur pour réaliser une adaptation automatique.

2. Étapes de mise en œuvre

  1. Créer une structure HTML
    Nous devons d'abord créer une structure HTML pour accueillir les images. Nous pouvons utiliser un élément div ou ul pour agir comme un conteneur et créer un élément enfant correspondant pour chaque image.
<div id="waterfall-container">
  <div class="column">
    <img src="image1.jpg">
  </div>
  <div class="column">
    <img src="image2.jpg">
  </div>
  ...
</div>
  1. Définir les styles CSS
    Afin d'obtenir l'effet de disposition du flux en cascade, nous devons définir la largeur et le nombre de colonnes du conteneur en CSS, et ajouter des styles à chaque colonne.
#waterfall-container {
  width: 1000px;
  column-count: 4;
  column-gap: 20px;
}

.column {
  display: inline-block;
  width: 100%;
}
  1. Utilisez JavaScript pour calculer la hauteur de chaque colonne
    Afin de calculer dynamiquement la hauteur de chaque colonne, nous pouvons utiliser JavaScript pour obtenir la largeur du conteneur et calculer la hauteur de chaque colonne en fonction de la largeur et des proportions de l'image.
window.onload = function() {
  var container = document.getElementById("waterfall-container");
  var columns = container.getElementsByClassName("column");

  function calculateColumnHeight() {
    var containerWidth = container.offsetWidth;
    var columnWidth = containerWidth / columns.length;

    for (var i = 0; i < columns.length; i++) {
      var column = columns[i];
      var images = column.getElementsByTagName("img");
      var totalImageHeight = 0;

      for(var j = 0; j < images.length; j++) {
        var image = images[j];
        var imageWidth = image.offsetWidth;
        var imageHeight = image.offsetHeight;
        var imageRatio = imageWidth / imageHeight;
        var adjustedImageHeight = columnWidth / imageRatio;

        totalImageHeight += adjustedImageHeight;
      }

      column.style.height = totalImageHeight + "px";
    }
  }

  calculateColumnHeight();
  window.addEventListener("resize", calculateColumnHeight);
}
  1. Ajouter de nouvelles images
    La dernière étape consiste à implémenter la fonction d'ajout de nouvelles images. Lorsqu'une nouvelle image est chargée, nous devons d'abord trouver la colonne avec la plus petite hauteur, ajouter la nouvelle image à cette colonne, puis recalculer la hauteur de chaque colonne.
function addNewImage(imageUrl) {
  var container = document.getElementById("waterfall-container");
  var columns = container.getElementsByClassName("column");
  
  var minHeightColumn = columns[0];
  for (var i = 1; i < columns.length; i++) {
    if (columns[i].offsetHeight < minHeightColumn.offsetHeight) {
      minHeightColumn = columns[i];
    }
  }
  
  var newImage = document.createElement("img");
  newImage.src = imageUrl;
  minHeightColumn.appendChild(newImage);
  
  calculateColumnHeight();
}

addNewImage("image3.jpg");

Résumé :
Grâce aux étapes ci-dessus, nous pouvons utiliser JavaScript pour implémenter une disposition simple de flux de cascade d'images. En calculant dynamiquement la hauteur de chaque colonne et en ajoutant de nouvelles images à la colonne ayant la plus petite hauteur, nous pouvons obtenir un effet adaptatif. Cette méthode de mise en page peut créer un effet unique et intéressant lors de l'affichage des images, améliorant ainsi l'expérience utilisateur. Grâce à la pratique et à davantage d'exploration, nous pouvons optimiser davantage les performances et l'effet de l'ensemble de la disposition, rendant la disposition de la cascade plus fluide et plus belle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn