2025-01-30T01:41:18

This commit is contained in:
2025-01-30 01:41:18 +09:00
parent 75cf69e82f
commit e7ee682f16
13 changed files with 908 additions and 0 deletions

137
docs/04_레이아웃.md Normal file
View File

@@ -0,0 +1,137 @@
# 레이아웃
## display
요소가 어떻게 배치되는지를 결정
* block : 블록 요소 (새 줄에서 시작)
* inline : 인라인 요소 (한 줄 안에 배치)
* inline-block : 인라인처럼 배치되지만 크기 조절 가능
* none : 요소를 숨김
* flex : 플렉스 박스 활성화
* grid : 그리드 시스템 활성화
```css
.box {
display: flex;
}
```
## position
요소를 정확한 위치에 배치할 때 사용
* static : 기본값 (HTML 흐름을 따름)
* relative : 원래 위치 기준으로 이동
* absolute : 부모 요소 기준으로 절대 위치
* fixed : 뷰포트 기준으로 고정
* sticky : 스크롤 시 특정 위치에서 고정
> absolute는 가까운 position: relative 부모 요소 기준으로 배치됨
```css
.box {
position: absolute;
top: 50px;
left: 100px;
}
```
## top, right, bottom, left
* top : 요소를 위에서 아래로 이동
* right : 요소를 오른쪽에서 왼쪽으로 이동
* bottom : 요소를 아래에서 위로 이동
* left : 요소를 왼쪽에서 오른쪽으로 이동
> 이 속성들은 요소의 **position 값이 relative, absolute, fixed, sticky**일 때만 동작해!<br />
> static일 때는 적용되지 않음!
### relative에서의 사용
* 요소가 원래 위치를 기준으로 이동
```css
.box {
position: relative;
top: 20px; /* 원래 위치보다 20px 아래로 이동 */
left: 10px; /* 원래 위치보다 10px 오른쪽으로 이동 */
}
```
### absolute에서의 사용
* 가장 가까운 position: relative를 가진 부모 요소를 기준으로 이동
* 부모가 없으면 **뷰포트(브라우저 화면)**를 기준으로 배치됨
```css
.parent {
position: relative;
}
.box {
position: absolute;
top: 50px;
right: 20px;
}
/* .box는 .parent 기준으로 위에서 50px, 오른쪽에서 20px 떨어진 위치에 배치됨 */
```
### fixed에서의 사용
* **브라우저 화면(뷰포트)**을 기준으로 고정
```css
.box {
position: fixed;
bottom: 10px;
right: 10px;
}
/* 화면의 오른쪽 하단에 고정됨 (스크롤해도 움직이지 않음) */
```
### sticky에서의 사용
* 스크롤에 따라 움직이다가 특정 위치에 고정됨
```css
.box {
position: sticky;
top: 0;
}
/* .box는 스크롤되다가 top: 0 위치에 도달하면 고정됨 */
```
## z-index
요소의 쌓이는 순서를 결정 (값이 클수록 위에 위치)
```css
.box {
position: absolute;
z-index: 10;
}
```
## float
요소를 왼쪽 또는 오른쪽으로 띄움. 주로 이미지나 텍스트 레이아웃에서 사용.
```css
img {
float: right;
margin: 10px;
}
```
> float을 사용하면 요소가 부모 요소를 빠져나올 수 있기 때문에, `clear: both;`를 이용해 레이아웃을 정리해야 함
## clear
clear 속성은 float된 요소 옆에 다른 요소가 배치되는 것을 막아줌.
float 속성을 사용할 때, 레이아웃이 깨지는 걸 방지하는 용도로 사용됨.
* none : 기본값 (제거 없음)
* left : 왼쪽의 float을 해제
* right : 오른쪽의 float을 해제
* both : 양쪽 모두 해제
## overflow
콘텐츠가 부모 요소보다 커질 때 어떻게 처리할지 결정하는 속성!
* visible : (기본값) 넘치는 콘텐츠를 그대로 표시
* hidden : 넘치는 부분을 숨김
* scroll : 스크롤바 생성 (항상 표시됨)
* auto : 넘칠 때만 스크롤바 생성
```css
.box {
width: 100px;
height: 50px;
overflow: hidden;
} /* 넘치는 부분이 잘려서 보이지 않음 */
```
## visibility
visibility 속성은 요소를 보이거나 숨길 때 사용되며, `display: none;`과의 차이가 있음!
* visible : 기본값 (요소가 보임)
* hidden : 요소가 보이지 않지만 공간은 유지
* collapse : table-row, table-column을 숨길 때 사용
> * `visibility: hidden;` : 요소가 보이지 않지만 공간은 그대로 유지
> * `display: none;` : 요소가 완전히 제거됨 (공간도 사라짐)