| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Graph
- 프로그래밍패러다임
- 함수형프로그래밍
- 가상메모리
- 단위테스트
- folium
- 파일시스템
- pandas
- 이벤트처리
- flexbox
- SQLD
- BFS
- 챌린지
- parser
- 보안솔루션
- OOP
- sql
- 코딩테스트
- javascript
- ReactNative
- reactnavigation
- defaultdict
- CSS
- 베이직
- PYTHON
- database
- db
- 부스트캠프
- DFS
- display
- Today
- Total
DevLog
Flexbox 바로 알기(1) - display: block | inline | inline-block | flex; 본문
Display
화면에 렌더링 되는 요소들을 어떻게 보여줄지 결정하는 CSS 속성

모든 웹사이트는 Box(영역)로 이루어져 있다!
웹사이트를 분할해보면 각 content들의 영역이 나눠지는 것을 볼 수 있는데 이것을 box라고 하고,
각 box는 display 속성값에 따라 화면 상에서 다르게 보여진다.
Block

가장 기본적인 box는 `<div>` 태그이며, `div`의 기본 display 속성은 `block`이다.
Block box 옆에는 어떤 것도 올 수 없다. box가 있는 그 한 줄이 온전히 box의 영역으로 할당되기 때문!
그래서 따로 줄바꿈을 해주지 않더라도 다음 요소가 알아서 아래로 밀려나는 모습을 볼 수 있다.
`<div>`뿐만 아니라 `<header>`, `<main>`, `<section>`, `<p>` 등으로 만들어진 box도 마찬가지
⇒ 이렇게 block 속성값을 디폴트로 갖는 요소들을 Blocks라고 부른다.
Inline
`display: inline;`을 기본값으로 가지며 옆에 다른 요소가 붙어있을 수 있는 요소들
= Inlines (in the same line, 한 줄에 같이 쓸 수 있다는 의미)
inlines은 box가 아닌 element이기 때문에 width와 height를 가질 수 없다.
대신 margin과 border, padding 모두 적용 가능!
다만 inline은 그 자체로 높이(상하)가 없기 때문에 margin의 경우 좌우에만 적용된다.
대표적인 inlines에는 `<span>`, `<a>`, `<img />` 세 종류가 있고, 나머지는 거의 다 blocks에 해당한다.
Inline-block

block 속성을 유지하면서 inline처럼 동작하기 위한 display!
요소를 block으로 인식하여 width와 height를 부여하는 동시에(= block 속성) 한 줄에 연달아 출력할 수 있다(= inline 속성).
하지만 `inline-block`을 사용하면 정해진 형식이 없어서 각 box들 사이에 default로 공간이 생겨버린다.
(위에서 보이듯이 각 box들 사이에 설정하지 않은 빈 공간이 나타남)
게다가 반응형 디자인(responsive design)을 지원하지 않아서 box들을 정렬하고 배치할 때 어려움이 많다는 단점이 있다.
Flexbox

기존 display의 문제점을 보완한 display 속성값
⇒ flex!
flexbox로 화면 레이아웃을 잡게 되면 box를 원하는 곳에 손쉽게 가져다 놓을 수 있는데,
이는 부모 element를 flex container로 만들어서 자식 element의 위치와 간격 등을 제어하는 방식으로 이루어진다.
자식 element (box)에 직접 스타일 속성값을 주는 것이 아니라,
반드시 부모 element에 `display: flex;` 속성을 부여하고 내부 요소들의 배치를 명시해야 함을 잊지 말 것!!