如何創建:帶過濾功能的作品集畫廊

學習如何創建帶篩選功能的作品集畫廊。

我的作品集

請點擊按鈕過濾某一類別:

Mountains
Mountains

Lorem ipsum dolor..

Aurora
Lights

Lorem ipsum dolor..

Nature
Forest

Lorem ipsum dolor..

Car
Classic

Lorem ipsum dolor..

Car
Fast

Lorem ipsum dolor..

Car
Retro

Lorem ipsum dolor..

Car
Girl

Lorem ipsum dolor..

Car
Woman

Lorem ipsum dolor..

Car
Man

Lorem ipsum dolor..

親自試一試

如何創建作品集網站

第一步 - 添加 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>
<!-- 作品集畫廊網格 -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Mountains" style="width:100%">
      <h4>Mountains</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>Lights</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>Forest</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>Fast</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>Classic</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>Girl</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>Man</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>Woman</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- 結束網格 -->
</div>

第二步 - 添加 CSS:

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  font-family: Arial;
}
/* 居中網站 */
.main {
  max-width: 1000px;
  margin: auto;
}
h1 {
  font-size: 50px;
  word-break: break-all;
}
.row {
  margin: 8px -16px;
}
/* 在每列之間添加內邊距(如果需要) */
.row,
.row > .column {
  padding: 8px;
}
/* 創建三個彼此相鄰的等寬列 */
.column {
  float: left;
  width: 33.33%;
  display: none; /* 默認隱藏列 */
}
/* 清除行后的浮動 */
.row:after {
  content: "";
  display: table;
  clear: both;
}
/* 內容 */
.content {
  background-color: white;
  padding: 10px;
}
/* "show" 類被添加到被過濾的元素中 */
.show {
  display: block;
}
/* 設置按鈕的樣式 */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;
}
/* 鼠標懸停時添加灰色背景顏色 */
.btn:hover {
  background-color: #ddd;
}
/* 為活動按鈕添加深色背景顏色 */
.btn.active {
  background-color: #666;
   color: white;
}

第三步 - 添加 JavaScript:

filterSelection("all") // 執行函數并顯示所有列
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  // 將 "show" 類(display:block)添加到過濾后的元素中,并從未選中的元素中刪除 "show" 類
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// 顯示過濾后的元素
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];
    }
  }
}
// 隱藏未選中的元素
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(" ");
}
// 將活動類添加到當前按鈕(突出顯示它)
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";
  });
}

親自試一試

相關頁面

教程:如何創建作品集圖庫