본문 바로가기
HTML/CSS문법

CSS navigation bar

by flycoding 2023. 9. 1.
반응형

CSS navigation var

사용하기 쉬운 탐색 기능은 웹 사이트에 매우 중요하다.

CSS를 사용하면 지루한 HTML 메뉴를 보기 좋은 네비게이션 바로 변환할 수 있다.

 

Navigation bar = list of links

탐색 모음에는 표준 HTML이 기본으로 필요하다.

이 예제에서는 표준 HTML 목록에서 탐색 모음을 작성한다.

탐색 모음은 기본적으로 링크의 목록이므로 <ul> 및 <li> 요소를 사용하면 다음과 같은 이점이 있다:

<!DOCTYPE html>
<html>
<body>

<ul>
  <li><a href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

<p>참고: 우리는 테스트 링크에 href="#"을 사용합니다. 실제 웹 사이트에서 이것은 URL일 것입니다.</p>

</body>
</html>

위의 코드를 실행하면 아래 그림과 같이 리스트에 링크를 설정한 메뉴가 표시되며 아래 그림과 같다.

CSS list links 예제

 

이제 글머리 기호와 여백 및 패딩을 목록에서 제거한다:

<!DOCTYPE html>
<html>

<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
</style>
</head>

<body>

<ul>
  <li><a href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

<p>참고: 우리는 테스트 링크에 href="#"을 사용합니다. 실제 웹 사이트에서 이것은 URL일 것입니다.</p>

</body>
</html>

예를 들어 설명:

list-style-type: none; - 글렛을 제거한다. 탐색 모음에는 목록 마커가 필요하지 않다
브라우저 기본 설정을 제거하려면 마진 설정: 0, 패딩: 0
위의 예에 있는 코드는 수직 및 수평 탐색 막대에 모두 사용되는 표준 코드이며, 이 코드에 대해서는 다음 장에서 자세히 설명한다.

 

 

수직 탐색 모음을 작성하려면 이전 페이지의 코드 외에 목록 내부의 <a> 요소를 스타일 지정할 수 있다:

<!DOCTYPE html>
<html>

<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

li a {
  display: block;
  width: 60px;
  background-color: #dddddd;
}

</style>
</head>

<body>

<ul>
  <li><a href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

<p>참고: 우리는 테스트 링크에 href="#"을 사용합니다. 실제 웹 사이트에서 이것은 URL일 것입니다.</p>
<p>텍스트뿐만 아니라 전체 링크 영역을 클릭할 수 있습니다.</p>

</body>
</html>

위의 코드 실행 결과 화면은 아래 그림과 같다.

CSS 수직 네비 바 예제

 

예를 들어 설명:

display: block; - 링크를 블록 요소로 표시하면 (텍스트뿐만 아니라) 전체 링크 영역을 클릭할 수 있으며, 너비(그리고 원하는 경우 패딩, 여백, 높이 등)를 지정할 수 있다
너비: 60px; - 블록 요소가 기본적으로 사용 가능한 전체 너비를 차지합니다. 60픽셀 너비를 지정하고자 한다
블록 요소로 표시될 때 사용할 수 있는 전체 너비를 차지하므로 <ul>의 너비를 설정하고 <a>의 너비를 제거할 수도 있다. 이렇게 하면 이전 예제와 동일한 결과가 생성됩니다:

 

수직 네비게이션 바 예제(Vertical Navigation bar)

회색 배경색의 기본 수직 탐색 막대를 만들고 사용자가 링크 위로 마우스를 이동할 때 링크의 배경색을 변경한다:

<!DOCTYPE html>
<html>
<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 200px;
  background-color: #f1f1f1;
}

li a {
  display: block;
  color: #000;
  padding: 8px 16px;
  text-decoration: none;
}

/* Change the link color on hover */
li a:hover {
  background-color: #555;
  color: white;
}
</style>
</head>
<body>

<h2>수직 네비게이션 바</h2>

<ul>
  <li><a href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

</body>
</html>

위의 코드를 실행한 결과 화면은 아래 그림과 같다.

CSS vertical navigation bar(수직 네비게이션 바) 예제

 

Active/Current Navigaiton Link

현재 링크에 "활성" 클래스를 추가하여 사용자가 어떤 페이지에 있는지 알 수 있다:

<!DOCTYPE html>
<html>
<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 200px;
  background-color: #f1f1f1;
}

li a {
  display: block;
  color: #000;
  padding: 8px 16px;
  text-decoration: none;
}

li a.active {
  background-color: #04AA6D;
  color: white;
}

li a:hover:not(.active) {
  background-color: #555;
  color: white;
}
</style>
</head>
<body>

<h2>수직 네비게이션 바</h2>
<p>이 예에서는 녹색 배경색과 흰색 텍스트로 "활성" 클래스를 만듭니다. 클래스는 "홈" 링크에 추가됩니다.</p>

<ul>
  <li><a class="active" href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

</body>
</html>

위의 코드를 실행하면 아래 그림과 같다.

CSS 수직 네비게이션바 active/current link 예제

 

가운데 링크와 테두리 추가

<li> 또는 <a>에 text-align:center를 추가하여 링크의 중앙을 맞춘다.

<ul>에 테두리 속성을 추가하여 탐색바 주변에 테두리를 추가한다. 

탐색바 내부에 테두리를 추가하려면 마지막 요소를 제외한 모든 <li> 요소에 테두리 하단을 추가한다:

<!DOCTYPE html>
<html>
<head>
<style>
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 200px;
  background-color: #f1f1f1;
  border: 1px solid #555;
}

li a {
  display: block;
  color: #000;
  padding: 8px 16px;
  text-decoration: none;
}

li {
  text-align: center;
  border-bottom: 1px solid #555;
}

li:last-child {
  border-bottom: none;
}

li a.active {
  background-color: #04AA6D;
  color: white;
}

li a:hover:not(.active) {
  background-color: #555;
  color: white;
}
</style>
</head>
<body>

<h2>수직 네비게이션 바</h2>
<p>이 예에서는 녹색 배경색과 흰색 텍스트로 "활성" 클래스를 만듭니다. 클래스는 "홈" 링크에 추가됩니다.</p>

<ul>
  <li><a class="active" href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

</body>
</html>

위의 코드를 실행하면 아래 그림과 같다.

CSS 수직 네비게이션 바 수평정렬 및 테두리 설정 예제

 

전체 높이 고정 수직 탐색기(full-height fixed vertical NavBar)

전체 높이의 "끈적끈적" 측면 내비게이션을 만든다:

<!DOCTYPE html>
<html>
<head>
<style>
body {
  margin: 0;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 25%;
  background-color: #f1f1f1;
  position: fixed;
  height: 100%;
  overflow: auto;
}

li a {
  display: block;
  color: #000;
  padding: 8px 16px;
  text-decoration: none;
}

li a.active {
  background-color: #04AA6D;
  color: white;
}

li a:hover:not(.active) {
  background-color: #555;
  color: white;
}
</style>
</head>
<body>

<ul>
  <li><a class="active" href="#home">홈</a></li>
  <li><a href="#news">뉴스</a></li>
  <li><a href="#contact">연락처</a></li>
  <li><a href="#about">About</a></li>
</ul>

<div style="margin-left:25%;padding:1px 16px;height:1000px;">
  <h2>고정식 전체 높이 사이드 내비게이션</h2>
  <h3>이 영역을 스크롤하여 사이드네브가 페이지에 부착되는 방법을 확인합니다</h3>
  <p>이 div 요소의 왼쪽 여백은 25%입니다. 이는 측면 탐색이 너비 25%로 설정되어 있기 때문입니다. 여백을 제거하면 사이드나브가 이 div 위에 겹쳐지거나 놓입니다.</p>
  <p>또한 오버플로우: auto to sidenav를 설정했습니다. 이것은 sidenav가 너무 길면 스크롤 바를 추가합니다(예: 내부에 50개 이상의 링크가 있는 경우).</p>
  <p>Some text..</p>
  <p>Some text..</p>
  <p>Some text..</p>
  <p>Some text..</p>
  <p>Some text..</p>
  <p>Some text..</p>
  <p>Some text..</p>
</div>

</body>
</html>

ul요소에 width는 25%, position은 fixed, height값은 100%로 설정하고 

div요소에 margin-left 값은 25%, padding은 1px, 16px, height값은 1000px값을 설정하여 수직으로 네비게이션바가 설정되고 전체 높이로 사이드 네비영역이 설정하였으며 위의 코드를 실행한 결과는 아래 그림과 같다.

CSS 고정 전체 높이 사이드 네비게이션 바 예제

 

지금까지 li요소를 활용하여 네비바 및 수직 네비게이션 등에 대한 개념과 실습을 살펴보았다.

꼭 손으로, 눈으로, 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

반응형

'HTML > CSS문법' 카테고리의 다른 글

CSS dropdown  (2) 2023.09.03
CSS 수평 네비게이션 바  (0) 2023.09.02
CSS opacity/transparency  (0) 2023.08.31
CSS pseudo-elements  (1) 2023.08.30
CSS pseudo-classes  (0) 2023.08.29

댓글