• 검색어를 입력해 주세요.
  • 검색어를 입력해 주세요.
디자인키트 0
블로그 전체목록
화살표

보고계신 기능이 적용된
템플릿이에요!

HTML소스를 구매하시면
전체 소스를 활용하실 수 있어요!

  • 템플릿을 찾지 못했어요!

400여개 디자인

더 많은 템플릿 보기

CSS content-visibility로 카드 목록과 긴 콘텐츠를 가볍게 보여주는 방법

CSS 26.08.07 조회 29



홈페이지를 만들다 보면 카드 목록, 포트폴리오 리스트, 갤러리, 긴 소개 섹션처럼 한 페이지 안에 많은 콘텐츠가 들어가는 경우가 있습니다. 화면 아래쪽에 있는 콘텐츠까지 처음부터 모두 계산하고 그리면, 페이지가 무겁게 느껴질 수 있습니다.

이럴 때 확인해볼 수 있는 CSS 속성이 content-visibility입니다. 이 속성은 브라우저가 아직 화면에 보이지 않는 콘텐츠의 렌더링 작업을 필요한 시점까지 미룰 수 있게 도와줍니다.

다만 content-visibility는 사이트 속도를 무조건 빠르게 만들어주는 마법 같은 속성은 아닙니다. 어떤 영역에 적용할지, 레이아웃이 흔들리지 않는지, 실제 화면에서 체감이 있는지를 함께 확인해야 합니다.

핵심은 content-visibility는 화면 아래쪽의 긴 콘텐츠나 반복 카드 목록의 렌더링 부담을 줄이는 데 도움이 될 수 있는 CSS 속성이라는 점입니다.

content-visibility는 어떤 속성일까요?

content-visibility는 요소 안의 콘텐츠를 브라우저가 언제 렌더링할지 제어하는 CSS 속성입니다.

특히 자주 언급되는 값은 auto입니다.

.section {
    content-visibility: auto;
}

content-visibility: auto;를 적용하면 브라우저는 화면에 가까워지기 전까지 해당 영역의 렌더링 부담을 줄일 수 있습니다. 사용자가 스크롤해서 해당 영역에 접근하면 콘텐츠가 실제로 필요한 시점에 표시됩니다. 긴 랜딩페이지나 카드 목록처럼 아래쪽 콘텐츠가 많은 화면에서 검토해볼 수 있는 방식입니다.

카드 목록에 왜 도움이 될 수 있을까요?

카드형 UI는 같은 구조가 반복되는 경우가 많습니다. 이미지, 제목, 설명, 버튼이 들어간 카드가 20개, 30개 이상 이어지면 처음 페이지를 열 때 처리해야 할 요소가 많아집니다.

예를 들어 포트폴리오 목록이나 상품형 카드 목록은 아래처럼 여러 카드가 반복됩니다.

<section class="card-list">
    <article class="card">포트폴리오 카드 1</article>
    <article class="card">포트폴리오 카드 2</article>
    <article class="card">포트폴리오 카드 3</article>
</section>

이런 구조에서 화면 아래쪽에 있는 카드 묶음은 사용자가 바로 보지 않을 수도 있습니다. 이때 카드 리스트나 섹션 단위로 content-visibility를 적용하면 초기 렌더링 부담을 줄이는 데 도움이 될 수 있습니다.

.card-section {
    content-visibility: auto;
    contain-intrinsic-size: 600px;
}

여기서 contain-intrinsic-size는 해당 영역이 아직 렌더링되지 않았을 때 사용할 예상 크기를 지정하는 역할을 합니다.

contain-intrinsic-size는 왜 함께 볼까요?

content-visibility: auto;만 적용하면 브라우저가 아직 그리지 않은 영역의 실제 높이를 정확히 알기 어려울 수 있습니다. 이때 페이지 스크롤 위치가 흔들리거나, 콘텐츠가 나타나는 순간 레이아웃이 갑자기 바뀌는 느낌이 생길 수 있습니다.

그래서 함께 확인하는 속성이 contain-intrinsic-size입니다.

.long-section {
    content-visibility: auto;
    contain-intrinsic-size: 800px;
}

이 코드는 해당 섹션이 아직 렌더링되지 않았을 때 대략 800px 정도의 공간을 가진 것처럼 처리하겠다는 의미로 볼 수 있습니다. 정확한 값은 콘텐츠 구조에 따라 달라집니다. 카드가 많은 섹션인지, 이미지가 큰 갤러리인지, 텍스트가 긴 소개 영역인지에 따라 적절한 예상 크기를 잡아야 합니다.

lazy loading과는 무엇이 다를까요?

content-visibility는 이미지 lazy loading과 비슷해 보일 수 있지만 역할이 다릅니다.

이미지 lazy loading은 주로 이미지 파일을 나중에 불러오는 방식입니다.

<img src="portfolio.jpg" alt="포트폴리오 이미지" loading="lazy">

반면 content-visibility는 특정 요소의 렌더링 작업을 필요한 시점까지 미루는 방식에 가깝습니다.

정리하면 이렇게 볼 수 있습니다.

  • loading="lazy": 이미지나 iframe 로딩을 늦추는 방식
  • content-visibility: 콘텐츠 영역의 렌더링 부담을 줄이는 방식
  • contain-intrinsic-size: 렌더링 전 예상 크기를 잡아 레이아웃 흔들림을 줄이는 방식

이미지가 많은 카드 목록이라면 두 개념을 함께 검토할 수 있습니다. 이미지는 lazy loading으로, 카드 섹션의 렌더링 부담은 content-visibility로 나눠 보는 식입니다.



어떤 영역에 적용하기 좋을까요?

content-visibility는 모든 요소에 무작정 적용하기보다, 아래쪽에 길게 이어지는 독립적인 섹션에 적용하는 편이 좋습니다.

활용을 검토해볼 수 있는 영역은 아래와 같습니다.

  • 포트폴리오 카드 목록
  • 이미지 갤러리 섹션
  • 후기나 리뷰 리스트
  • 긴 서비스 소개 섹션
  • FAQ처럼 아래쪽에 배치되는 콘텐츠
  • 반복되는 상품·콘텐츠 카드 묶음

반대로 첫 화면에 바로 보이는 메인 비주얼, 핵심 문구, 주요 CTA 버튼처럼 사용자가 처음 확인해야 하는 영역에는 신중하게 접근해야 합니다. 초기 화면에서 반드시 보여야 하는 정보까지 렌더링을 미루면 오히려 사용자 경험이 나빠질 수 있습니다.

적용 전 확인할 부분

content-visibility를 적용할 때는 성능만 보면 안 됩니다. 화면이 자연스럽게 보이는지, 레이아웃이 흔들리지 않는지, 콘텐츠 확인에 문제가 없는지를 함께 봐야 합니다.

적용 전에는 아래 내용을 확인하는 것이 좋습니다.

  • 첫 화면에 바로 필요한 콘텐츠는 아닌가?
  • 섹션이 독립적으로 나뉘어 있는가?
  • contain-intrinsic-size 값이 너무 작거나 크지 않은가?
  • 스크롤할 때 레이아웃이 갑자기 튀지 않는가?
  • 이미지 lazy loading과 함께 사용할 필요가 있는가?
  • 모바일에서도 콘텐츠가 자연스럽게 표시되는가?
  • 실제 성능 측정에서 개선이 확인되는가?

특히 카드 목록이나 긴 섹션은 PC보다 모바일에서 더 무겁게 느껴질 수 있습니다. 적용 후에는 모바일 화면에서 스크롤 흐름을 꼭 확인하는 것이 좋습니다.

디자인 소스 수정 시 어떻게 볼 수 있을까요?

HTML 템플릿이나 웹디자인 소스를 수정할 때는 페이지 안에 어떤 콘텐츠가 많이 반복되는지 먼저 확인해야 합니다.

예를 들어 포트폴리오 템플릿이라면 카드 목록이 길게 이어질 수 있고, 병원이나 교육 템플릿이라면 진료 과목, 강의 목록, 후기, FAQ가 길게 들어갈 수 있습니다. 이런 영역은 초기 화면에서 바로 보이지 않더라도 전체 렌더링 부담에는 영향을 줄 수 있습니다.

디자인키트의 HTML 템플릿이나 웹디자인 소스를 수정할 때도 마찬가지입니다. 카드 목록, 갤러리, 긴 랜딩페이지 섹션처럼 아래쪽에 많은 콘텐츠가 이어지는 구조라면 content-visibility를 적용할 수 있는지 검토해볼 수 있습니다. 다만 템플릿 구조를 무리하게 바꾸기보다, 섹션 단위로 작게 테스트하면서 실제 표시 결과와 성능 변화를 확인하는 방식이 안전합니다.

자주 묻는 질문

Q. content-visibility를 쓰면 페이지가 무조건 빨라지나요?

무조건 빨라지는 것은 아닙니다. 콘텐츠 구조, 브라우저 환경, 적용 위치에 따라 체감이 달라질 수 있습니다. 긴 페이지나 반복 콘텐츠가 많은 화면에서 효과를 확인해보는 것이 좋습니다.

Q. 모든 섹션에 적용해도 되나요?

그렇게 적용하는 방식은 권장하기 어렵습니다. 첫 화면에 필요한 콘텐츠나 사용자 행동과 바로 연결되는 영역에는 신중하게 적용해야 합니다. 아래쪽에 있는 긴 섹션이나 반복 카드 목록부터 검토하는 편이 좋습니다.

Q. contain-intrinsic-size는 꼭 필요하나요?

상황에 따라 함께 사용하는 것이 좋습니다. 렌더링이 지연되는 영역의 예상 크기를 잡아주면 스크롤 중 레이아웃이 갑자기 흔들리는 문제를 줄이는 데 도움이 됩니다.

Q. 이미지 lazy loading과 같이 써도 되나요?

같이 검토할 수 있습니다. 이미지 파일 로딩은 loading="lazy"로, 섹션 렌더링 부담은 content-visibility로 나눠서 볼 수 있습니다. 다만 실제 적용 후 화면 표시와 속도 변화를 확인해야 합니다.

긴 콘텐츠는 보이는 순서에 맞게 다뤄야 합니다

긴 홈페이지를 만들 때는 모든 콘텐츠를 처음부터 같은 비중으로 처리하기보다, 사용자가 실제로 보는 순서에 맞게 화면을 구성하는 것이 중요합니다.

content-visibility는 아래쪽에 있는 긴 콘텐츠나 반복되는 카드 목록의 렌더링 부담을 줄이는 데 도움이 될 수 있는 CSS 속성입니다. 여기에 contain-intrinsic-size를 함께 검토하면 렌더링 전 공간을 잡아 레이아웃 흔들림을 줄이는 데도 도움이 됩니다.

디자인키트의 HTML 템플릿이나 웹디자인 소스를 수정할 때도 카드 목록, 갤러리, 긴 소개 섹션처럼 콘텐츠가 많이 이어지는 화면을 확인할 일이 있습니다. 이때 content-visibility의 역할을 이해하고 적용 가능 영역을 구분하면 템플릿 구조를 유지하면서도 더 가벼운 화면 구성을 검토할 수 있습니다.

블로그 전체목록
디자인키트 카카오상담