Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS만으로 아이콘이 포함된 반응형 내비게이션 메뉴 만드는 방법

CSS의 미디어 쿼리(media query)와 Font Awesome 같은 아이콘 라이브러리를 활용하면 별도의 JavaScript 없이도 화면 크기에 따라 레이아웃이 자동으로 전환되는 반응형 내비게이션 메뉴를 손쉽게 만들 수 있습니다. 데스크톱에서는 메뉴 항목이 가로로 나열되고, 화면 폭이 좁아지면 세로로 쌓이는 방식입니다.

핵심 구현 포인트

  • 아이콘 추가: Font Awesome CDN 스타일시트를 연결한 뒤, <i> 태그에 fa-home, fa-user 등의 클래스를 지정해 각 메뉴 항목에 아이콘을 삽입합니다.
  • 가로 배치: 링크에 display: inline-block을 적용하면 데스크톱 화면에서 메뉴가 한 줄로 나란히 정렬됩니다.
  • 반응형 전환: @media screen and (max-width: 600px) 규칙에서 display: block으로 변경하면 화면 폭이 600px 이하일 때 메뉴가 세로 방향으로 쌓여 모바일 환경에 최적화됩니다.

전체 예제 코드

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body{
    margin:0px;
    margin-top:10px;
    padding: 0px;
}
nav{
    width: 100%;
    background-color: rgb(39, 39, 39);
    overflow: auto;
    height: auto;
}
.links {
    display: inline-block;
    text-align: center;
    padding: 14px;
    color: rgb(178, 137, 253);
    text-decoration: none;
    font-size: 17px;
}
.links:hover {
    background-color: rgb(100, 100, 100);
}
.selected{
    background-color: rgb(0, 18, 43);
}
@media screen and (max-width: 600px) {
    .links {
        display: block;
    }
}
</style>
</head>
<body>
<nav>
    <a class="links selected" href="#"><i class="fa fa-fw fa-home"></i> Home</a>
    <a class="links" href="#"><i class="fa fa-fw fa-user"></i> Login</a>
    <a class="links" href="#"><i class="fa fa-user-circle-o" aria-hidden="true"></i> Register</a>
    <a class="links" href="#"><i class="fa fa-fw fa-envelope"></i> Contact Us</a>
    <a class="links" href="#"><i class="fa fa-info-circle" aria-hidden="true"></i> More Info</a>
</nav>
</body>
</html>

코드 설명

nav 요소는 화면 전체 폭(width: 100%)을 차지하며 어두운 회색 배경을 적용했습니다. 각 메뉴 링크에 공통으로 사용된 .links 클래스는 inline-block으로 가로 정렬하고, 패딩으로 클릭 영역을 넓히며 밝은 보라색 텍스트와 밑줄 제거(text-decoration: none) 처리를 했습니다.

:hover 가상 클래스를 사용하면 마우스를 올렸을 때 배경색이 밝은 회색으로 바뀌어 시각적 피드백을 줄 수 있고, .selected 클래스는 현재 머무르고 있는 페이지의 메뉴 항목을 진한 남색 배경으로 강조합니다.

가장 중요한 부분은 미디어 쿼리입니다. max-width: 600px 조건 안에서 .links의 display 값을 block으로 바꾸면, 스마트폰처럼 화면이 좁은 기기에서는 각 메뉴가 한 줄씩 세로로 배치되어 가독성과 터치 편의성이 크게 향상됩니다.

실행 결과

위 코드를 실행하면 다음과 같은 내비게이션 메뉴가 출력됩니다.

CSS만으로 아이콘이 포함된 반응형 내비게이션 메뉴 만드는 방법

화면 크기를 600px 이하로 줄이면 메뉴 항목이 아래와 같이 세로로 정렬됩니다.

CSS만으로 아이콘이 포함된 반응형 내비게이션 메뉴 만드는 방법