Comment créer : une galerie de portfolio avec fonction de filtrage

Apprenez à créer une galerie de portfolio avec fonction de filtrage.

Mon portfolio

Cliquez sur le bouton pour filtrer une catégorie :

Mountains
Mountains

Lorem ipsum dolor..

Aurora
Lumières

Lorem ipsum dolor..

Nature
Forêt

Lorem ipsum dolor..

Car
Classique

Lorem ipsum dolor..

Car
Rapide

Lorem ipsum dolor..

Car
Rétro

Lorem ipsum dolor..

Car
Fille

Lorem ipsum dolor..

Car
Femme

Lorem ipsum dolor..

Car
Homme

Lorem ipsum dolor..

Essayez-le vous-même

Comment créer un site de portfolio

Étape 1 - Ajouter HTML :

<h2>PORTFOLIO</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Show all</button>
  <button class="btn" onclick="filterSelection('nature')"> Nature</button>
  <button class="btn" onclick="filterSelection('cars')"> Cars</button>
  <button class="btn" onclick="filterSelection('people')"> People</button>
</div>
<!-- Galerie de portfolio en grille -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Montagnes" style="width:100%">
      <h4>Montagnes</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/lights.jpg" alt="Lumières" style="width:100%">
      <h4>Lumières</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/nature.jpg" alt="Nature" style="width:100%">
      <h4>Forêt</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars1.jpg" alt="Voiture" style="width:100%">
      <h4>Rétro</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars2.jpg" alt="Voiture" style="width:100%">
      <h4> Rapide</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars3.jpg" alt="Voiture" style="width:100%">
      <h4>Classique</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people1.jpg" alt="People" style="width:100%">
      <h4>Fille</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people2.jpg" alt="People" style="width:100%">
      <h4>Homme</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people3.jpg" alt="People" style="width:100%">
      <h4>Femme</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- Fin de la grille -->
</div>

Deuxième étape - Ajouter CSS :

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  padding: 20px;
}
font-family: Arial;
/* Centrer le site */
  .main {
  max-width: 1000px;
}
margin: auto;
  h1 {
  font-size: 50px;
}
word-break: break-all;
  margin: 8px -16px;
}
/* Ajouter une marge interne entre les colonnes (si nécessaire) */
.row {
.row > .column {
  padding: 8px;
}
/* Créer trois colonnes adjacentes égales */
.column {
  float: left;
  width: 33.33%;
  display: none; /* Masquer les colonnes par défaut */
}
/* Nettoyer le flot après la ligne */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* Contenu */
.content {
  background-color: white;
  padding: 10px;
}
/* La classe "show" est ajoutée aux éléments filtrés */
.show {
  display: block;
}
/* Définir le style des boutons */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;
}
/* Ajouter une couleur de fond grise au survol de la souris */
.btn:hover {
  background-color: #ddd;
}
/* Ajouter une couleur de fond sombre à la bouton actif */
.btn.active {
  background-color: #666;
   color: white;
}

Étape 3 - Ajouter JavaScript :

filterSelection("all") // Exécuter la fonction et afficher toutes les colonnes
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  // Ajouter la classe "show" (display:block) aux éléments filtrés et supprimer la classe "show" des éléments non sélectionnés
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Afficher les éléments filtrés
function w3AddClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) == -1) {
      element.className += " " + arr2[i];
    }
  }
}
// Cacher les éléments non sélectionnés
function w3RemoveClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    while (arr1.indexOf(arr2[i]) > -1) {
      arr1.splice(arr1.indexOf(arr2[i]), 1);
    }
  }
  element.className = arr1.join(" ");
}
// Ajouter la classe active au bouton courant (mise en évidence)
var btnContainer = document.getElementById("myBtnContainer");
var btns = btnContainer.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function(){
    var current = document.getElementsByClassName("active");
    current[0].className = current[0].className.replace(" active", "");
    this.className += " active";
  });
}

Essayez-le vous-même

Pages associées

Tutoriel :Comment créer la bibliothèque de portfolio des œuvres