공익 기관의 투명한 운영을 뒷받침하는 디지털 플랫폼을 구축했으며, 사용자 접근성과 보안을 최우선으로 고려했습니다.
웹사이트 구축 목적
공익 기관의 투명한 운영을 시민에게 알리고, 청소년들에게는 활동 참여의 창구를 제공하는 '디지털 소통 허브'를 만드는 것이 이번 프로젝트의 목표였습니다. 단순히 홈페이지를 만드는 것에 그치지 않고, 기관의 정체성을 시각화해 방문자에게 신뢰감을 주는 데 집중했습니다.
이 함수는 데이터를 받아 자동으로 리스트를 만드는 핵심 로직입니다. 데이터 관리 효율성을 높이기 위해 설계되었습니다.
function renderGallery() {
const container = document.getElementById('gallery-grid');
const loadMoreBtn = document.getElementById('loadMoreBtn');
activityData.sort((a, b) => {
return new Date(b.sortDate) - new Date(a.sortDate);
});
const nextBatch = activityData.slice(currentIndex, currentIndex + itemsPerLoad);
nextBatch.forEach(item => {
let subImagesHTML = '';
item.subImgs.forEach(img => {
subImagesHTML += `<img src="${img}" alt="추가 사진">`;
});
let tagsHTML = '';
item.tags.forEach(tag => {
tagsHTML += `<span>${tag}</span>`;
});
const cardHTML = `
<div class="project-card">
<div class="gallery-container">
<div class="main-view">
<img src="${item.mainImg}" alt="${item.title}">
</div>
<div class="hidden-views">
${subImagesHTML}
</div>
</div>
<div class="project-info">
<h3 class="project-title" style="color:#2c5f2d;">${item.title}</h3>
<div class="project-meta">
<span><strong>일시:</strong> ${item.date}</span>
<span><strong>장소:</strong> ${item.location}</span>
</div>
<p class="project-desc">${item.desc}</p>
<div class="project-tags">
${tagsHTML}
</div>
</div>
</div>
`;
container.insertAdjacentHTML('beforeend', cardHTML);
});
currentIndex += nextBatch.length;
if (currentIndex >= activityData.length) {
loadMoreBtn.style.display = 'none';
}
}