作成方法:フィルタリング機能付きの作品集ギャラリー

フィルタリング機能付きの作品集ギャラリーを作成する方法を学びます。

私のポートフォリオ

ボタンをクリックしてカテゴリをフィルタリングしてください:

山

Lorem ipsum dolor..

极光

Lorem ipsum dolor..

自然

Lorem ipsum dolor..

汽车
クラシック

Lorem ipsum dolor..

汽车
速い

Lorem ipsum dolor..

汽车
レトロ

Lorem ipsum dolor..

汽车
少女

Lorem ipsum dolor..

汽车
女性

Lorem ipsum dolor..

汽车
男性

Lorem ipsum dolor..

自分で試してみてください

作品集ウェブサイトを作成する方法

第1歩 - HTMLを追加:

<h2>ポートフォリオ</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> 全て表示</button>
  <button class="btn" onclick="filterSelection('nature')"> 自然</button>
  <button class="btn" onclick="filterSelection('cars')"> 車</button>
  <button class="btn" onclick="filterSelection('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>

第2步 - CSSを追加:

* {
  box-sizing: border-box;
}
body {
  background-color: #f1f1f1;
  padding: 20px;
  padding: 20px;
}
font-family: Arial;
/* サイトを中央に配置 */
  .main {
  max-width: 1000px;
}
margin: auto;
  h1 {
  font-size: 50px;
}
word-break: break-all;
  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";
  });
}

自分で試してみてください

関連ページ

チュートリアル:ホワイトハウル:作品集図庫を创建する方法