🔵 Bootstrap 페이지네이션 UI에서 현재 페이지 강조하기

2025. 5. 9. 11:16·기술블로그-Django편

🔵 Bootstrap 페이지네이션 UI에서 현재 페이지 강조하기


🎯 목표

Bootstrap의 기본 페이지네이션 UI를 이용해 현재 페이지(active) 를 파란색으로 강조하는 방법을 배웁니다.
이를 통해 사용자에게 현재 위치를 명확하게 보여주는 UX 향상을 기대할 수 있습니다.


🧱 Bootstrap 페이지네이션 기본 구조

<ul class="pagination">
  <li class="page-item"><a class="page-link" href="#">1</a></li>
  <li class="page-item"><a class="page-link" href="#">2</a></li>
  <li class="page-item active"><a class="page-link" href="#">3</a></li>
  <li class="page-item"><a class="page-link" href="#">4</a></li>
</ul>
  • page-item: 각 페이지 버튼을 감싸는 <li>에 적용
  • page-link: 실제 페이지 번호가 표시되는 <a> 태그
  • active: 현재 페이지에만 추가하여 강조 효과 적용

✅ 핵심: active 클래스의 위치

<li class="page-item active">
  <a class="page-link" href="#">3</a>
</li>

🔹 이 구조에서 active 클래스는 li.page-item에 붙는 것이 표준입니다.

하지만 아래처럼 작성하면 잘못된 구조가 됩니다:

<li class="page-item">
  <a class="page-link active" href="#">3</a>
</li>
  • 이렇게 해도 일부 스타일은 적용되지만, 파란 배경이 반쪽만 적용되거나 깨질 수 있습니다
  • Bootstrap은 li.active > a.page-link 구조를 기준으로 스타일을 구성하기 때문입니다

🎨 실제 스타일 적용 (Bootstrap 5 기준)

.page-item.active .page-link {
  z-index: 3;
  color: #fff;
  background-color: #0d6efd;  /* 파란 배경 */
  border-color: #0d6efd;
}

🛠 Django 템플릿에서 현재 페이지 감지하기

{% for i in page_obj.paginator.page_range %}
  {% if page_obj.number == i %}
    <li class="page-item active">
      <a class="page-link" href="#">{{ i }}</a>
    </li>
  {% else %}
    <li class="page-item">
      <a class="page-link" href="?page={{ i }}">{{ i }}</a>
    </li>
  {% endif %}
{% endfor %}
  • page_obj.number: 현재 페이지 번호
  • page_obj.paginator.page_range: 전체 페이지 범위
  • 조건문을 통해 현재 페이지에만 .active 클래스 적용

❗ href="#"의 의미와 주의점

  • href="#"는 "현재 페이지의 최상단으로 이동"을 의미합니다
  • 실제 페이지 이동이 필요할 경우 ?page={{ i }} 형식으로 작성해야 합니다
<a href="?page={{ i }}">{{ i }}</a>

✅ 요약 정리

요소 역할 주의사항

li.page-item 페이지 버튼 컨테이너 .active 클래스는 여기에 적용
a.page-link 실제 링크 요소 텍스트는 이 안에 있어야 함
.active 현재 페이지 강조용 클래스 li에 붙여야 배경 적용됨
href="#" 임시 링크 또는 최상단 이동 실제 이동은 ?page=숫자 사용

이제 Bootstrap 페이지네이션에서 현재 페이지를 시각적으로 명확히 표시하는 방법을 정확히 이해하고 사용할 수 있습니다 🔵

'기술블로그-Django편' 카테고리의 다른 글

🛠 Django 기본 Form(as_p)을 간접 커스터마이징하는 방법  (0) 2025.05.09
🔁 Django {% include %} 문법으로 공통 자바스크립트 재사용하기  (0) 2025.05.09
⚡ Emmet 완전 정복: PyCharm에서 HTML/CSS 자동완성 설정하기  (0) 2025.05.09
📌 Django ORM 완전정복: 개념부터 예시, 흐름까지 한 번에 정리!  (0) 2025.05.08
📌 Django DeleteView의 확인 화면 제거 vs JS confirm() 비교 가이드  (0) 2025.05.08
'기술블로그-Django편' 카테고리의 다른 글
  • 🛠 Django 기본 Form(as_p)을 간접 커스터마이징하는 방법
  • 🔁 Django {% include %} 문법으로 공통 자바스크립트 재사용하기
  • ⚡ Emmet 완전 정복: PyCharm에서 HTML/CSS 자동완성 설정하기
  • 📌 Django ORM 완전정복: 개념부터 예시, 흐름까지 한 번에 정리!
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (702)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (40)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🔵 Bootstrap 페이지네이션 UI에서 현재 페이지 강조하기
상단으로

티스토리툴바