필터 기능을 가진 작품집 갤러리를 어떻게 만드는가

필터 기능을 가진 작품집 갤러리를 만드는 방법을 배우세요.

저의 작품집

버튼을 클릭하여 한 종류의 카테고리를 필터링하세요:

산

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..

본인이 직접 시도해 보세요

작품집 웹사이트를 어떻게 만드는가

첫 번째 단계 - 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="산" style="width:100%">
      <h4>산</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/lights.jpg" alt="빛" style="width:100%">
      <h4>빛</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/nature.jpg" alt="자연" style="width:100%">
      <h4>숲</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars1.jpg" alt="차" style="width:100%">
      <h4>로트로이시</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars2.jpg" alt="차" style="width:100%">
      <h4>빠르다</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars3.jpg" alt="차" style="width:100%">
      <h4>클래식</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people1.jpg" alt="사람" style="width:100%">
      <h4>소녀</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people2.jpg" alt="사람" style="width:100%">
      <h4>남성</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people3.jpg" alt="사람" style="width:100%">
      <h4>여성</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- 그리드 종료 -->
</div>

第二步 - 추가 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";
  });
}

본인이 직접 시도해 보세요

관련 페이지

교육:위에서 어떻게 생성할 수 있습니까: 작품집 라이브러리