반응형
Web Development · HTML5 Semantic
연습 문제 풀이 —
nav + section + article 시맨틱 레이아웃
시맨틱 태그 구조와 float 메뉴를 함께 다루는 종합 연습
시작 연습 문제와 해답 코드
주제는 "강아지 용품 준비하기" 페이지. 메뉴(nav) + 본문(section + article) + 푸터(footer)를 시맨틱 태그로 구성하고, 메뉴 항목은 가로로 정렬, 각 항목 왼쪽에 보라색 막대를 표시하는 디자인.
<style> a:link { text-decoration: none; } nav ul { list-style-type: none; margin: 0; padding: 0; } nav ul li { float: left; font-size: 1.5em; padding-left: 7px; margin: 0 15px 20px 0; border-left: 5px solid #990066; } section { clear: both; } section article { padding-left: 10px; margin-bottom: 10px; border-top: 1px #a6a6a6 dashed; border-bottom: 1px #a6a6a6 dashed; } </style> <nav> <ul> <li><a href="#">애완견 종류</a></li> … </ul> </nav> <section id="content"> <h2>강아지 용품 준비하기</h2> <article> <h3>강아지 집</h3> <p>…</p> </article> … </section> <footer></footer>
실제 출력 미리보기
강아지 용품 준비하기
강아지 집
강아지가 편히 쉴 수 있는 포근한 집이 필요합니다. 박음질·세탁 간편한 제품이 좋습니다.
강아지 먹이
꼭 어린 강아지용 사료를 선택하세요. 사람 음식은 비만 위험이 높아집니다.
용어 용어 정리
<nav>주요 네비게이션 메뉴 영역
<section>주제별 묶음 — 본문 단위
<article>독립적으로 의미 있는 글 1개
<footer>페이지/섹션의 꼬리 영역
a:link방문 안 한 링크의 가상 클래스
text-decoration: none링크의 밑줄 제거
list-style-type: noneul의 동그라미·숫자 표시 제거
border-left왼쪽 테두리 — 막대 디자인 활용
1 nav ul li가 가로로 늘어서는 원리
li는 기본 블록 요소라 한 줄씩 차지한다. float: left를 주면 옆으로 차곡차곡 붙는다 — 메뉴 만드는 가장 전통적 방법.
※
section에 clear: both가 필수. 메뉴의 float이 본문에 영향 주지 않도록 끊어줘야 함.2 ul 기본 스타일 제거 패턴
nav ul { list-style-type: none; /* • 동그라미 제거 */ margin: 0; /* 기본 위·아래 여백 제거 */ padding: 0; /* 기본 왼쪽 들여쓰기 제거 */ }
이 3종 세트는 메뉴의 ul을 만들 때 거의 항상 함께 쓴다. 셋 중 하나라도 빠지면 의도와 다른 결과가 나옴.
3 border-left로 막대 만들기
각 메뉴 항목 왼쪽에 보라색 5px 막대를 만든 트릭. 별도 div나 :before 의사 요소 없이 border-left 한 줄로 깔끔하게.
border-left: 5px solid #990066; ─┬─ ──┬── ──┬── │ │ └─ 보라색 │ └─ 실선 └─ 두께 5px (디자인 포인트)
4 article 위·아래 점선
section article { border-top: 1px #a6a6a6 dashed; border-bottom: 1px #a6a6a6 dashed; }
각 article을 위·아래 점선으로 감싸 문단 구분을 명확히 한다. 카드 디자인과는 다르게 왼·오른쪽은 열려 있어 본문 흐름은 유지.
※ 인접한 article 두 개가 서로 만나는 부분 — 위 article의 bottom과 아래 article의 top이 두 줄로 보임. 깔끔하게 하려면
article + article { border-top: none; } 같은 인접 셀렉터.반응형
5 시맨틱 태그 vs div
div 남발
<div class="nav"> <div class="content"> <div class="article">의미 정보 없음. SEO·접근성 점수 낮음.
시맨틱 태그
<nav> <section> <article> <footer>구조 의미 명확. 검색·스크린 리더가 활용.
6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| section에 clear 누락 | 메뉴 float이 본문 침범 | section { clear: both } |
| list-style-type 누락 | 동그라미가 그대로 | nav ul { list-style: none } |
| ul에 padding 안 뺌 | 왼쪽이 떠 있음 | padding: 0 |
| article 사이 두 줄 점선 | border 겹침 | article + article { border-top: none } |
| 모든 박스에 div | 시맨틱 부족 | 의미 있는 곳은 nav, section, article 사용 |
핵심 한 줄 요약
시맨틱 태그nav · section · article · footer로 구조 의미 부여
메뉴 가로 정렬li에 float: left + section에 clear: both
ul 초기화list-style + margin + padding 3종 세트
border-left 트릭메뉴 막대 디자인 한 줄로
article 점선위·아래 dashed로 문단 구분
Tags
#시맨틱태그 #semantic-html #nav #section #article #footer #header #ul-li #float-left #list-style #clear-both #border-left #HTML5 #CSS레이아웃 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
시맨틱태그, semantic-html, nav, section, article, footer, header, ul-li, float-left, list-style, clear-both, border-left, HTML5, CSS레이아웃, 웹개발, 티스토리
반응형
'php' 카테고리의 다른 글
| 연습 — table + col + thead/tbody + caption-side 완전 정리 (0) | 2026.05.05 |
|---|---|
| 테이블 — empty-cells 빈 셀 처리 완전 정리 (1) | 2026.05.05 |
| CSS z-index — 박스 쌓임 순서 완전 정리 (0) | 2026.05.05 |
| CSS visibility — 요소 숨기기 완전 정리 (0) | 2026.05.05 |
| 연습 — rgba 반투명 배경 박스 완전 정리 (0) | 2026.05.05 |
댓글