이미지 갤러리는 웹 페이지에서 이미지를 깔끔하게 정리하고, 사용자가 쉽게 이미지를 탐색할 수 있도록 도와주는 중요한 요소입니다. 반응형 이미지 갤러리는 다양한 화면 크기와 디바이스에 맞게 레이아웃을 자동으로 조정하여 사용자에게 최적의 경험을 제공합니다. 이 글에서는 CSS를 사용해 간단한 반응형 이미지 갤러리를 만드는 방법을 소개하겠습니다.

1. 기본 이미지 갤러리 HTML 구조

먼저, 이미지 갤러리를 구성할 HTML 구조를 정의합니다. 각 이미지에 대해 img 요소를 포함하는 div 요소를 사용합니다.

HTML 예시:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>반응형 이미지 갤러리</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="gallery">
        <div class="gallery-item">
            <img src="image1.jpg" alt="이미지 1">
        </div>
        <div class="gallery-item">
            <img src="image2.jpg" alt="이미지 2">
        </div>
        <div class="gallery-item">
            <img src="image3.jpg" alt="이미지 3">
        </div>
        <div class="gallery-item">
            <img src="image4.jpg" alt="이미지 4">
        </div>
        <!-- 추가 이미지 -->
    </div>
</body>
</html>

설명:

  • .gallery: 전체 갤러리를 감싸는 요소입니다.
  • .gallery-item: 각각의 이미지를 감싸는 개별 요소입니다.
  • img: 실제로 표시될 이미지 파일입니다.

2. 갤러리 스타일링

이제 CSS를 사용하여 갤러리의 레이아웃과 스타일을 정의합니다. Flexbox를 사용하여 반응형 레이아웃을 구현하고, 이미지를 적절히 배치합니다.

CSS 예시:

/* 갤러리 스타일 */
.gallery {
    display: flex;
    flex-wrap: wrap;
    gap: 10px; /* 이미지 사이의 간격 */
    justify-content: center; /* 갤러리 중앙 정렬 */
    padding: 20px;
    background-color: #f4f4f4;
}

.gallery-item {
    flex: 1 1 calc(25% - 20px); /* 각 아이템의 너비 설정 */
    max-width: calc(25% - 20px);
    box-sizing: border-box;
    overflow: hidden;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* 그림자 효과 */
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.gallery-item img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.gallery-item:hover {
    transform: translateY(-10px); /* 호버 시 이미지가 떠오르는 효과 */
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); /* 호버 시 그림자 확대 */
}

.gallery-item:hover img {
    transform: scale(1.1); /* 호버 시 이미지 확대 */
}

설명:

  • .gallery: Flexbox 레이아웃을 사용하여 갤러리를 구성합니다. flex-wrap: wrap;은 화면 크기에 따라 이미지가 줄 바꿈되도록 하고, gap 속성으로 이미지 사이의 간격을 설정합니다.
  • .gallery-item: 각 이미지 항목의 너비를 설정하고, calc(25% - 20px)로 4개의 아이템이 한 줄에 배치되도록 조정합니다. 또한, 이미지의 모서리를 둥글게 만들고 그림자 효과를 추가합니다.
  • .gallery-item img: 이미지를 갤러리 항목의 크기에 맞게 조정하고, object-fit: cover;을 사용해 이미지가 고르게 표시되도록 합니다.
  • .gallery-item:hover: 사용자가 갤러리 항목에 마우스를 올렸을 때, 이미지가 약간 떠오르고 그림자가 깊어지는 효과를 추가합니다.
  • .gallery-item:hover img: 이미지를 확대하여 호버 시 확대 효과를 만듭니다.

3. 반응형 디자인 적용

화면 크기에 따라 갤러리의 레이아웃이 자동으로 조정되도록 미디어 쿼리를 사용합니다. 작은 화면에서는 이미지가 2개 또는 1개씩 배치되도록 설정할 수 있습니다.

반응형 디자인 CSS 예시:

/* 작은 화면에서 두 개의 이미지가 한 줄에 배치되도록 설정 */
@media screen and (max-width: 768px) {
    .gallery-item {
        flex: 1 1 calc(50% - 20px);
        max-width: calc(50% - 20px);
    }
}

/* 매우 작은 화면에서 한 개의 이미지가 한 줄에 배치되도록 설정 */
@media screen and (max-width: 480px) {
    .gallery-item {
        flex: 1 1 calc(100% - 20px);
        max-width: calc(100% - 20px);
    }
}

설명:

  • @media screen and (max-width: 768px): 화면 너비가 768px 이하일 때, 갤러리 아이템이 50% 너비를 차지하도록 설정하여 한 줄에 2개의 이미지가 표시되도록 합니다.
  • @media screen and (max-width: 480px): 화면 너비가 480px 이하일 때, 갤러리 아이템이 100% 너비를 차지하여 한 줄에 1개의 이미지가 표시되도록 설정합니다.

결론

CSS를 사용해 반응형 이미지 갤러리를 만드는 것은 현대 웹 디자인에서 매우 중요한 기술입니다. Flexbox를 사용해 갤러리의 레이아웃을 쉽게 구성하고, 미디어 쿼리를 통해 다양한 화면 크기에 대응할 수 있습니다. 그림자 효과와 호버 애니메이션을 추가하면, 갤러리가 시각적으로 더욱 매력적이 됩니다.

이 글에서 소개한 기본적인 이미지 갤러리 디자인을 바탕으로, 여러분의 웹사이트에 맞는 다양한 스타일을 시도해보세요. 반응형 이미지 갤러리는 사용자의 경험을 향상시키고, 웹 페이지의 전반적인 디자인 품질을 높일 수 있습니다.

+ Recent posts