Miten luodaan: Suodatusominaisuudella varustettu työpajayhteisö galleria

Opi, miten luodaan suodatusominaisuudella varustettu työpajayhteisö galleria.

Minun työpajayhteisöni

Klikkaa painiketta ja suodata tietty luokka:

Vuoret
Vuoret

Lorem ipsum dolor..

Auora
Valot

Lorem ipsum dolor..

Luonto
Metsä

Lorem ipsum dolor..

Auto
Klassinen

Lorem ipsum dolor..

Auto
Nopea

Lorem ipsum dolor..

Auto
Retro

Lorem ipsum dolor..

Auto
Tyttö

Lorem ipsum dolor..

Auto
Nainen

Lorem ipsum dolor..

Auto
Mies

Lorem ipsum dolor..

Kokeile itse

Miten luodaan työpajayhteisö verkkosivusto

Vaihe 1 - Lisää HTML:

<h2>PORTFOLIO</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Näytä kaikki</button>
  <button class="btn" onclick="filterSelection('nature')"> Luonto</button>
  <button class="btn" onclick="filterSelection('cars')"> Autoja</button>
  <button class="btn" onclick="filterSelection('people')"> Ihmiset</button>
</div>
<!-- Työkalupaketti gallerian ruudukko -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Mountains" style="width:100%">
      <h4>Montut</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>Valot</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>Metsä</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>Taisteellinen</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>Nopea</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>Klassinen</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>Tyttö</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>Mies</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>Nainen</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- Lopetetaan ruudukko -->
</div>

Toinen vaihe - Lisää CSS:

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  font-family: Arial;
}
/* Keskitä sivusto */
.main {
  max-width: 1000px;
  margin: auto;
}
h1 {
  font-size: 50px;
  word-break: break-all;
}
.row {
  margin: 8px -16px;
}
/* Lisää sisäpuolinen marginaali sarakkeiden välillä (tarvittaessa) */
.row,
.row > .column {
  padding: 8px;
}
/* Luo kolme rinnakkaisesti sijaitsevaa yhtä leveää saraketta */
.column {
  float: left;
  width: 33.33%;
  display: none; /* Oletuksena piilotetaan sarakkeet */
}
/* Poista rivin jälkeen oleva liikkuvuus */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* Sisältö */
.content {
  background-color: white;
  padding: 10px;
}
/* "show"-luokka lisätään suodatetuille elementeille */
.show {
  display: block;
}
/* Aseta painikkeen tyyli */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;
}
/* Lisää hiiren osoittimen yllä kellan taustaväri */
.btn:hover {
  background-color: #ddd;
}
/* Lisää aktiiviseen painikkeeseen tumma taustaväri */
.btn.active {
  background-color: #666;
   color: white;
}

Kolmas vaihe - Lisää JavaScript:

filterSelection("all") // Suorita funktio ja näytä kaikki sarakkeet
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  // Lisää "show"-luokka (display:block) suodatusväliltä löytyviin elementteihin ja poista "show"-luokka valituista elementeistä
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Näytä suodetut elementit
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];
    }
  }
}
// Piilota valitsemattomat elementit
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(" ");
}
// Lisää aktiivinen luokka nykyiselle painikkeelle (korosta sitä)
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";
  });
}

Kokeile itse

Liittyvät sivut

Oppaita:Miten luoda teoskokoelma