Cómo crear: Galera de portafolio con filtros

Aprende a crear una galería de portafolio con filtros.

Mi portafolio

Haga clic en el botón para filtrar una categoría:

Montañas
Montañas

Lorem ipsum dolor..

Aurora
Luces

Lorem ipsum dolor..

Naturaleza
Bosque

Lorem ipsum dolor..

Coche
Clásico

Lorem ipsum dolor..

Coche
Rápido

Lorem ipsum dolor..

Coche
Retro

Lorem ipsum dolor..

Coche
Niña

Lorem ipsum dolor..

Coche
Mujer

Lorem ipsum dolor..

Coche
Hombre

Lorem ipsum dolor..

Prueba por ti mismo

Cómo crear un sitio web de portafolio

Paso 1 - Añadir HTML:

<h2>PORTFOLIO</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Mostrar todo</button>
  <button class="btn" onclick="filterSelection('nature')"> Naturaleza</button>
  <button class="btn" onclick="filterSelection('cars')"> Coches</button>
  <button class="btn" onclick="filterSelection('people')"> Personas</button>
</div>
<!-- Galera de portafolio en cuadrícula -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Montañas" style="width:100%">
      <h4>Montañas</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/lights.jpg" alt="Luces" style="width:100%">
      <h4>Luces</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> Bosque</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars1.jpg" alt="Carro" 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="Carro" style="width:100%">
      <h4>Rápido</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars3.jpg" alt="Carro" style="width:100%">
      <h4>Clásico</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>Niña</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>Hombre</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>Mujer</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- Final de la rejilla -->
</div>

Segundo paso - Añadir CSS:

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  padding: 20px;
}
font-family: Arial;
/* Centrar el sitio web */
  .main {
  max-width: 1000px;
}
margin: auto;
  h1 {
  font-size: 50px;
}
word-break: break-all;
  margin: 8px -16px;
}
/* Añadir margen interno entre las columnas (si es necesario) */
.row {
.row > .column {
  padding: 8px;
}
/* Crear tres columnas adyacentes y de igual anchura */
.column {
  float: left;
  width: 33.33%;
  display: none; /* Ocultar las columnas por defecto */
}
/* Quitar el flotador después de la fila */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* Contenido */
.content {
  background-color: white;
  padding: 10px;
}
/* La clase "show" se agrega a los elementos filtrados */
.show {
  display: block;
}
/* Establecer el estilo de los botones */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;
}
/* Añadir color de fondo gris al pasar el ratón */
.btn:hover {
  background-color: #ddd;
}
/* Añadir color de fondo oscuro a los botones activos */
.btn.active {
  background-color: #666;
   color: white;
}

Tercero - Añadir JavaScript:

filterSelection("all") // Ejecutar la función y mostrar todas las columnas
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  // Agregar la clase "show" (display:block) a los elementos filtrados y eliminar la clase "show" de los elementos no seleccionados
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Mostrar elementos filtrados
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];
    }
  }
}
// Ocultar elementos no seleccionados
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(" ");
}
// Añadir la clase de actividad al botón actual (resaltarlo)
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";
  });
}

Prueba por ti mismo

Páginas relacionadas

Tutoriales:¿Cómo crear la biblioteca de portfolio de obras?