TIL/Today I Learned

[Develop] 23.06.30 개발 공부 일지

임성장 2023. 7. 1. 23:59
728x90

요약: 반응형 designHotel 제작, thefaceshop 공지사항 클론코딩

일시: 23.06.30 09:30~18:20

장소: 더휴먼컴퓨터아트아카데미

배운 점:

JSON 파일을 불러와, 사진을 load하는 웹페이지

const container = document.querySelector('.gallery-wrap');
const loadMoreBtn = document.querySelector('.loadMoreBt');

let addItemCount = 3;
let added = 0;
let allData = [];
let ItemHTML;

fetch('./data/video.json')
  .then(response => response.json())
  .then(data => {
    allData = data;
    addItem();
    loadMoreBtn.addEventListener('click', addItem);
  });

function addItem() {
  const element = [];
  const slicedData = allData.slice(added, added += addItemCount);

  slicedData.forEach(item => {
    ItemHTML = `
      <li class="Gallery-item">
        <div>
          <a href="javascript:" class="galleryBt">
            <span class="gallery-video">
              <video src="${item.video}" autoplay muted loop></video>
            </span>
            <span class="galleryCap"></span>
            <span class="gallery-title">
              <span><strong>${item.title}</strong></span>
              <span><b>${item.description}</b></span>
              <span><i class="exploreBt">Explore</i></span>
            </span>
          </a>
        </div>
      </li>
    `;
    const tempElement = document.createElement('div');
    // 문자열 좌우에서 공백을 제거하는 함수가 trim() 함수
    tempElement.innerHTML = ItemHTML.trim();
    const itemElement = tempElement.firstChild;
    element.push(itemElement);
  });

  element.forEach(item => {
    container.appendChild(item);
  });

  if (added >= allData.length) {
    loadMoreBtn.style.display = 'none';
  }
}

 

부족한 점:

728x90