Come creare: una galleria di portfolio con funzione di filtro

Impara a creare una galleria di portfolio con funzione di filtro.

La mia raccolta di opere

Clicca sul pulsante per filtrare una categoria:

Montagne
Montagne

Lorem ipsum dolor..

Aurora
Luci

Lorem ipsum dolor..

Natura
Bosco

Lorem ipsum dolor..

Automobile
Classico

Lorem ipsum dolor..

Automobile
Veloce

Lorem ipsum dolor..

Automobile
Retro

Lorem ipsum dolor..

Automobile
Ragazza

Lorem ipsum dolor..

Automobile
Donna

Lorem ipsum dolor..

Automobile
Uomo

Lorem ipsum dolor..

Try it yourself

Come creare un sito web di portfolio

Passo 1 - Aggiungi HTML:

<h2>PORTFOLIO</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')">Mostra tutto</button>
  <button class="btn" onclick="filterSelection('nature')">Natura</button>
  <button class="btn" onclick="filterSelection('cars')">Auto</button>
  <button class="btn" onclick="filterSelection('people')">Persone</button>
</div>
<!-- Galeria di portfolio -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Mountains" style="width:100%">
      <h4>Montagne</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/lights.jpg" alt="Lights" style="width:100%">
      <h4>Luci</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>Foresta</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars1.jpg" alt="Car" style="width:100%">
      <h4>Retro</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars2.jpg" alt="Car" style="width:100%">
      <h4>Veloce</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars3.jpg" alt="Car" style="width:100%">
      <h4>Classico</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> Ragazza</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>Uomo</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>Donna</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- Fine griglia -->
</div>

Secondo passo - Aggiungi CSS:

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  padding: 20px;
}
font-family: Arial;
/* Centra il sito */
  .main {
  max-width: 1000px;
}
margin: auto;
  h1 {
  font-size: 50px;
}
word-break: break-all;
  margin: 8px -16px;
}
/* Aggiungi un margine interno tra le colonne (se necessario) */
.row {
.row > .column {
  padding: 8px;
}
/* Crea tre colonne adiacenti e di uguale larghezza */
.column {
  float: left;
  width: 33.33%;
  display: none; /* Nascondi le colonne per default */
}
/* Rimuovi il浮动 dopo la riga */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* Contenuto */
.content {
  background-color: white;
  padding: 10px;
}
/* La classe "show" viene aggiunta agli elementi filtrati */
.show {
  display: block;
}
/* Imposta lo stile dei pulsanti */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;
}
/* Aggiungi un colore di sfondo grigio quando il mouse è sopra la pulsante */
.btn:hover {
  background-color: #ddd;
}
/* Aggiungi un colore di sfondo scuro alla pulsante attiva */
.btn.active {
  background-color: #666;
   color: white;
}

Passo 3 - Aggiungi JavaScript:

filterSelection("all") // Esegui la funzione e mostra tutte le colonne
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  // Aggiungi la classe "show" (display:block) agli elementi filtrati e rimuovi la classe "show" dagli elementi non selezionati
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Show the filtered elements
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];
    }
  }
}
// Hide the unselected elements
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(" ");
}
// Add the active class to the current button (highlight it)
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";
  });
}

Try it yourself

Related pages

Tutorial:Come creare la libreria di portfolio delle opere