728x90
반응형
SMALL
네비게이션 바 만들기
네비게이션 바는 모든 페이지에서 공통으로 보여야 한다.
/templates/layout.html
...
<!-- 네비게이션 바 -->
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<div class="container-fluid">
<a class="navbar-brand" href="/">SBB</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#">로그인</a>
</li>
</ul>
</div>
</div>
</nav>
...
SBB를 클릭하면 메인 화면으로 이동한다.
추후 로그인 기능 추가를 위해 로그인 버튼도 생성해놓았다.
화면 크기에 따라 나타나는 햄버거 메뉴 버튼도 추가했다.


네비게이션 바의 숨은 기능 알기
부트스트랩은 위와 같이 브라우저의 크기가 작아지면 자동으로 내비게이션 바에 있는 링크들을 햄버거 메뉴 버튼으로 숨긴다.
이를 반응협 웹 이라고 한다.
하지만 현재 이 버튼을 클릭하면 아무 반응이 일어나지 않는데 이를 활용하기 위해서는 부트스트랩 자바스크립트 파일(bootstrap.min.js)을 static 디렉터리로 복사해야 한다.
bootstrap.min.js 파일 복사

이제 추가한 자바스크립트 파일을 사용할 수 있도록 태그를 추가하자
/templates/layout.html
...
<!-- Bootstrap JS -->
<script th:src="@{/bootstrap.min.js}"></script>
...

네비게이션 바 분리하기
이전에 우리는 오류 메시지를 표시하는 부분을 공통 템플릿으로 분리하였다.
이번에 네비게이션 바도 공통 템플릿으로 분리하여 활용해보자.
/templates/navbar.html
<nav th:fragment="navbarFragment" class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<div class="container-fluid">
<a class="navbar-brand" href="/">SBB</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#">로그인</a>
</li>
</ul>
</div>
</div>
</nav>
nav태그의 th:fragment 속성을 이용하여 그 부분만 코드를 수정하면 된다.
/templates/layout.html
이전에 네비게이션 바 코드가 있던 부분을 모두 제거하고 아래처럼 수정해보자.
....
<!--네비게이션 바 -->
<nav th:replace="~{navbar :: navbarFragment}"></nav>
...
이렇게 분리하면 중복해서 사용하지는 안허달도 독립된 하나의 템플릿으로 관리하는 것이 유지보수에 좋다.
728x90
반응형
LIST
'IT > Spring Boot' 카테고리의 다른 글
[Spring Boot] 21. 페이징 기능 (2)페이지 이동 기능 추가 (0) | 2024.05.02 |
---|---|
[Spring Boot] 20. 페이징 기능 (1)데이터 페이징 처리 (0) | 2024.05.02 |
[Spring Boot] 18. 공통 템플릿 만들기 (0) | 2024.04.30 |
[Spring Boot] 17. 폼(Form) 활용하기(2) (0) | 2024.04.30 |
[Spring Boot] 16. 폼(Form) 활용하기(1) (0) | 2024.04.30 |