ul : 목록
li: 리스트
a: 링크
[href="#"]: html 속성, 값 젠코딩
{메뉴$}: 텍스트
>emm~
[목록과 리스트태그]
1.ul과 li 단독으로 사용할 수 없다.( 단독으로 사용시 웹표준에 어긋남.)
2. 순서없는 목록과 리스트에 사용한다
3. 보통은 특정 메뉴에 많이 사용한다. ( 사용자 메뉴, 홈페이지 메인메뉴 등..)
4. 너무 큰 구조에는 잘 사용하지 않는다. ( 마켓컬리 상품리스트처럼, 가독성이 떨어진다.)
5. ★ ul태그 자식으로는 li 태그만 사용할 수 있다.
6. li태그 자식은 아무나 와도 된다. ul도 들어올 수 있다.


※ 정리
- ul ↔ li는 세트 (단독 사용 X)
- 메뉴 가로 배치는 display: flex + align-items: center
- 상단바 고정은 position: fixed
- hover 효과는 :hover로, 전환은 transition
- 로고 전환은 background-image 교체 + background-size: contain
- 텍스트 안 보이게 하려면 font-size: 0 (이미지 로고만 보여줄 때)
1) 목록 구조 핵심 (ul > li > a)
젠코딩(Emmet) 단축: ul>li*6>a[href="#"]{메뉴$}
- ul : 순서 없는 목록
- li : 리스트 항목
- a : 링크(앵커)
- href="#" : 임시 링크
- {메뉴$} : $는 자동 증가(메뉴1, 메뉴2…)
생성되는 HTML
<li><a href="#">메뉴1</a></li>
<li><a href="#">메뉴2</a></li>
<li><a href="#">메뉴3</a></li>
<li><a href="#">메뉴4</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴6</a></li>
</ul>
규칙 요약
- ul의 직계 자식은 li만 가능
- li 안에는 텍스트/a/이미지/또 다른 ul 등 다양한 요소 가능
- 복잡한 데이터 표현엔 부적합 → 그땐 table/grid 고려
2) 상단바(top-bar) 레이아웃
background-color: rgba(255,255,255,0); /* 투명 */
position: fixed; /* 스크롤해도 상단 고정 */
height: 100px;
left: 0;
right: 0;
transition: 0.5s; /* 변화 부드럽게 */
display: flex;
justify-content: space-between;
align-items: center;
}
.top-bar:hover {
background-color: rgba(255,255,255,1); /* hover 시 흰 배경 */
}
- fixed는 화면에 고정 → 헤더·플로팅바에 적합
- rgba()로 배경만 투명 제어 (요소 전체 투명은 opacity)
3) 로고 영역(hover 전환)
background-image: url(../image/logo_w.png);
background-repeat: no-repeat;
background-size: contain; /* 비율 유지 */
background-position: center;
width: 143px;
height: 34px;
display: flex;
font-size: 0; /* 텍스트 숨김 */
transition: 0.5s;
}
.top-bar:hover .logo-box > a {
background-image: url(../image/logo_1.png); /* hover 시 교체 */
}
- background-size: contain : 로고 찌그러짐 방지
- 로고가 링크라면 a에 백그라운드 이미지로 배치 깔끔
- 텍스트 숨김은 font-size: 0 또는 text-indent: -9999px 대안
4) 메뉴 가로 배치(Flex)
display: flex; /* 가로 나열 */
}
.menu > ul > li {
width: 135px;
text-align: center; /* 텍스트 중앙 */
}
- 기본 가로 정렬: display: flex
- 아이템 간 간격은 gap: 24px;처럼 주면 관리 쉬움
- 모바일 대응은 @media로 폰트/간격/정렬 조절
A) HTML 골격
<div class="top-bar">
<div class="logo-box">
<a href="#"></a>
</div>
<nav class="menu">
<ul>
<li><a href="#">메뉴1</a></li>
<li><a href="#">메뉴2</a></li>
<li><a href="#">메뉴3</a></li>
<li><a href="#">메뉴4</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴6</a></li>
</ul>
</nav>
<div class="user-menu"><!-- 로그인/장바구니/검색 등 --></div>
</div>
</header>
B) CSS 기본
/* 상단바 */
.top-bar {
background-color: rgba(255,255,255,0);
position: fixed;
left: 0; right: 0; height: 100px;
display: flex; justify-content: space-between; align-items: center;
transition: 0.5s;
}
.top-bar:hover { background-color: rgba(255,255,255,1); }
/* 로고 */
.logo-box > a {
display: flex; width: 143px; height: 34px; font-size: 0;
background: center / contain no-repeat url(../image/logo_w.png);
transition: 0.5s;
}
.top-bar:hover .logo-box > a {
background-image: url(../image/logo_1.png);
}
/* 메뉴 */
.menu > ul { display: flex; gap: 24px; }
.menu > ul > li { width: 135px; text-align: center; }
.menu a { display: inline-block; padding: 8px 0; }
/* 유저 메뉴(아이콘 자리) */
.user-menu { display: flex; align-items: center; gap: 12px; }
/* 접근성(키보드 포커스 표시) */
.menu a:focus { outline: 2px solid #444; outline-offset: 2px; }
🧩 흔한 실수 & 해결 팁
- ul만 쓰거나 li만 쓰는 경우 → 웹표준 위반, 반드시 함께!
- 로고 찌그러짐 → background-size: contain 또는 <img style="object-fit: contain">
- hover 전환이 뚝 끊김 → transition 추가
- 메뉴가 세로로 떨어짐 → display: flex 누락 확인
- fixed 헤더 때문에 내용 가려짐 → main { padding-top: 100px; }로 보정
- 링크 밑줄/보라색 → CSS 리셋에서 a { text-decoration: none; color: inherit; } 처리
초간단 암기 구문
- “울리(a)” — ul-li-a 순서로 생각하면 구조가 잘 잡힘
- “픽스-플렉스-호버-트랜지션” — 헤더 상호작용 4단계
- “컨테인으로 찌그러짐 방지” — 로고·썸네일 이미지
z-index 요약
- z-index는 포지션이 있는 요소(static 제외)에 주로 의미가 있음.
- 스태킹 컨텍스트를 만드는 요인들(position+z-index, opacity<1, transform, filter, isolation: isolate 등)이 다르면, 서로 간 우선순위가 바뀔 수 있어요.
- 간단 규칙: “겹치면 더 큰 z-index + 같은 컨텍스트 안에서만 비교”라고 기억.
헷갈리는 포인트 정리
- absolute 기준: 가장 가까운 “position된” 조상(보통 relative를 부모에 줘서 확정).
- fixed 기준: 원칙적으로 뷰포트. 단, 일부 환경에서 transform 걸린 조상 영향 받을 수 있음.
- relative 이동: 공간은 유지, 화면에서만 살짝 이동.
- static: 아무 오프셋 안 먹힘(기본값).
'코딩 > 복습' 카테고리의 다른 글
| 251027 picogram (top-bar) (0) | 2025.10.27 |
|---|---|
| 251017 SPC 모작 (0) | 2025.10.17 |
| 251002 picogram (banner) (0) | 2025.10.02 |
| 251001 Market kurly (list) (0) | 2025.10.01 |
| 250927 라이나 생명 박스 만들기 (0) | 2025.09.27 |