반응형 웹 디자인에서 내비게이션 바는 화면 크기에 맞춰 레이아웃이 자동으로 조정되어야 합니다. 아래 예제는 HTML과 CSS만을 사용해 로그인 폼이 포함된 반응형 내비게이션 메뉴를 구현한 것입니다. 데스크톱 화면에서는 메뉴 링크와 로그인 입력란이 한 줄에 배치되고, 화면이 좁아지면 세로로 정렬되도록 동작합니다.
예제 코드
다음은 로그인 폼이 포함된 반응형 내비게이션 메뉴의 전체 코드입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<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);
}
form {
float: right;
margin-top: 8px;
}
form input{
display: inline-block;
padding: 6px;
font-size: 17px;
margin-right: 8px;
border:none;
}
.selected {
background-color: rgb(0, 18, 43);
}
@media screen and (max-width: 977px) {
.links {
display: block;
}
form {
display: block;
color:white;
}
form input{
margin-right: 0px;
display: block;
width: 100vw;
margin: 0px;
border-bottom: 2px solid rgb(178, 137, 253);
text-align: center;
}
}
</style>
</head>
<body>
<nav>
<a class="links selected" href="#">
Home
</a>
<a class="links" href="#">
Login
</a>
<a class="links" href="#">
Register
</a>
<a class="links" href="#">
Contact Us
</a>
<a class="links" href="#">
More Info
</a>
<form>
<input type="text" placeholder="UserName..." />
<input type="password" placeholder="Password...">
</form>
</nav>
</body>
</html>
코드 설명
nav요소에는 어두운 배경색과overflow: auto속성을 적용해 내용이 넘칠 경우 자동으로 조절되도록 했습니다..links클래스는display: inline-block으로 설정되어 데스크톱 환경에서는 메뉴 항목들이 가로로 나열됩니다. 마우스를 올리면(:hover) 배경색이 변경되어 시각적인 피드백을 제공합니다.form은float: right로 오른쪽에 배치되어 아이디(UserName)와 비밀번호(Password) 입력란을 표시합니다.@media screen and (max-width: 977px)미디어 쿼리를 사용해 화면 너비가 977px 이하로 줄어들면 링크와 입력 필드가display: block으로 전환되어 세로로 쌓입니다.- 모바일 환경에서는 입력 필드가
width: 100vw로 확장되고 하단에 보라색 테두리가 추가되어 작은 화면에서도 입력하기 편리합니다.
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

브라우저 창 크기를 977px 이하로 줄이면 미디어 쿼리가 작동하여 nav 내부의 콘텐츠가 다음과 같이 세로로 재배치됩니다.
