Flexbox는 웹페이지의 요소를 가로 또는 세로 한 줄로 정렬하고, 남는 공간을 효율적으로 채우거나 분배하는 데 최적화된 CSS 레이아웃 모델입니다. 복잡한 계산 없이도 반응형 디자인을 쉽게 만들 수 있어, 현대 퍼블리싱의 필수 요소라고 할 수 있죠.
핵심 개념: 부모(컨테이너)와 자식(아이템)
Flexbox는 항상 **부모 요소(Flex Container)**에 속성을 부여하여 그 안에 있는 **자식 요소(Flex Item)**들을 정렬하고 배치합니다.
Flexbox 사용법: 단 2단계!
1단계: 부모 요소를 Flex Container로 만들기
자식 요소들을 Flexbox의 규칙에 따라 배치하고 싶다면, 먼저 **부모 요소에 `display: flex;` 속성을 부여해야 합니다.
html
<div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
css
.container {
display: flex; /* 이것만으로 자식들이 가로로 한 줄에 정렬됩니다! */
border: 2px solid blue;
padding: 10px;
}
.item {
background-color: lightgray;
padding: 20px;
margin: 5px;
border: 1px solid gray;
}
* `display: flex;`를 추가하는 순간, `.item`들은 자동으로 가로 방향(기본값: `row`)으로 한 줄에 나란히 정렬됩니다.
2단계: 자식 요소들을 어떻게 정렬할지 부모에서 설정하기
이제 `display: flex;`를 준 부모(`.container`)에게 다음과 같은 속성들을 추가하여 자식(`.item`)들의 정렬 방식을 제어할 수 있습니다.
* **`justify-content` (주축 정렬):** 가로 방향(기본값)으로 자식들을 어떻게 배치할지 결정합니다.
* `flex-start`: 시작점에 정렬 (기본)
* `flex-end`: 끝점에 정렬
* `center`: 가운데 정렬
* `space-between`: 양쪽 끝에 하나씩, 나머지 균등 배치
* `space-around`: 자식 주변에 균등한 공간 배치
* `space-evenly`: 자식 사이와 양 끝에 모두 균등한 공간 배치
css
.container {
display: flex;
justify-content: center; /* 자식들을 가로 중앙에 정렬 */
}
*`align-items` (교차축 정렬):** 세로 방향(기본값)으로 자식들을 어떻게 배치할지 결정합니다.
* `flex-start`: 시작점에 정렬
* `flex-end`: 끝점에 정렬
* `center`: 가운데 정렬
* `stretch`: 컨테이너 높이에 맞춰 늘리기 (기본)
* `baseline`: 텍스트 기준선에 맞춰 정렬
css
.container {
display: flex;
height: 150px; /* 세로 정렬을 위해 높이 지정 */
align-items: center; /* 자식들을 세로 중앙에 정렬 */
}
* `flex-direction` (정렬 방향):** 자식들을 가로로 놓을지 (`row`) 세로로 놓을지 (`column`) 결정합니다.
* `row`: 가로 (기본값)
* `column`: 세로
css
.container {
display: flex;
flex-direction: column; /* 자식들을 세로 방향으로 정렬 */
}
*`flex-wrap` (줄 바꿈):** 자식들이 한 줄에 들어가지 않을 때 어떻게 처리할지 결정합니다.
* `nowrap`: 한 줄에 강제로 배치 (기본값)
* `wrap`: 여러 줄로 줄 바꿈 허용
css
.container {
display: flex;
flex-wrap: wrap; /* 공간이 부족하면 자동으로 다음 줄로 넘김 */
}
간단 활용 예시: 네비게이션 메뉴 만들기**
html
<nav class="main-nav">
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Contact</a>
</nav>
css
.main-nav {
display: flex; /* 메뉴 아이템들을 가로로 나란히 */
justify-content: space-around; /* 아이템들 사이에 균등한 공간 */
align-items: center; /* 세로 중앙 정렬 */
background-color: #333;
padding: 10px 0;
}
.main-nav a {
color: white;
text-decoration: none;
padding: 5px 15px;
}
Flexbox는 이 몇 가지 속성만으로도 거의 모든 1차원적인 레이아웃을 손쉽게 만들 수 있습니다. 직접 코드를 작성하며 각 속성값을 바꿔보고, 브라우저에서 어떻게 변화하는지 확인해 보세요! Flexbox에 익숙해지면 퍼블리싱이 훨씬 즐거워질 거예요!
핵심 개념: 부모(컨테이너)와 자식(아이템)
Flexbox는 항상 **부모 요소(Flex Container)**에 속성을 부여하여 그 안에 있는 **자식 요소(Flex Item)**들을 정렬하고 배치합니다.
Flexbox 사용법: 단 2단계!
1단계: 부모 요소를 Flex Container로 만들기
자식 요소들을 Flexbox의 규칙에 따라 배치하고 싶다면, 먼저 **부모 요소에 `display: flex;` 속성을 부여해야 합니다.
html
<div class="container"> <div class="item">Item 1</div> <div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
css
.container {
display: flex; /* 이것만으로 자식들이 가로로 한 줄에 정렬됩니다! */
border: 2px solid blue;
padding: 10px;
}
.item {
background-color: lightgray;
padding: 20px;
margin: 5px;
border: 1px solid gray;
}
* `display: flex;`를 추가하는 순간, `.item`들은 자동으로 가로 방향(기본값: `row`)으로 한 줄에 나란히 정렬됩니다.
2단계: 자식 요소들을 어떻게 정렬할지 부모에서 설정하기
이제 `display: flex;`를 준 부모(`.container`)에게 다음과 같은 속성들을 추가하여 자식(`.item`)들의 정렬 방식을 제어할 수 있습니다.
* **`justify-content` (주축 정렬):** 가로 방향(기본값)으로 자식들을 어떻게 배치할지 결정합니다.
* `flex-start`: 시작점에 정렬 (기본)
* `flex-end`: 끝점에 정렬
* `center`: 가운데 정렬
* `space-between`: 양쪽 끝에 하나씩, 나머지 균등 배치
* `space-around`: 자식 주변에 균등한 공간 배치
* `space-evenly`: 자식 사이와 양 끝에 모두 균등한 공간 배치
css
.container {
display: flex;
justify-content: center; /* 자식들을 가로 중앙에 정렬 */
}
*`align-items` (교차축 정렬):** 세로 방향(기본값)으로 자식들을 어떻게 배치할지 결정합니다.
* `flex-start`: 시작점에 정렬
* `flex-end`: 끝점에 정렬
* `center`: 가운데 정렬
* `stretch`: 컨테이너 높이에 맞춰 늘리기 (기본)
* `baseline`: 텍스트 기준선에 맞춰 정렬
css
.container {
display: flex;
height: 150px; /* 세로 정렬을 위해 높이 지정 */
align-items: center; /* 자식들을 세로 중앙에 정렬 */
}
* `flex-direction` (정렬 방향):** 자식들을 가로로 놓을지 (`row`) 세로로 놓을지 (`column`) 결정합니다.
* `row`: 가로 (기본값)
* `column`: 세로
css
.container {
display: flex;
flex-direction: column; /* 자식들을 세로 방향으로 정렬 */
}
*`flex-wrap` (줄 바꿈):** 자식들이 한 줄에 들어가지 않을 때 어떻게 처리할지 결정합니다.
* `nowrap`: 한 줄에 강제로 배치 (기본값)
* `wrap`: 여러 줄로 줄 바꿈 허용
css
.container {
display: flex;
flex-wrap: wrap; /* 공간이 부족하면 자동으로 다음 줄로 넘김 */
}
간단 활용 예시: 네비게이션 메뉴 만들기**
html
<nav class="main-nav">
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Contact</a>
</nav>
css
.main-nav {
display: flex; /* 메뉴 아이템들을 가로로 나란히 */
justify-content: space-around; /* 아이템들 사이에 균등한 공간 */
align-items: center; /* 세로 중앙 정렬 */
background-color: #333;
padding: 10px 0;
}
.main-nav a {
color: white;
text-decoration: none;
padding: 5px 15px;
}
Flexbox는 이 몇 가지 속성만으로도 거의 모든 1차원적인 레이아웃을 손쉽게 만들 수 있습니다. 직접 코드를 작성하며 각 속성값을 바꿔보고, 브라우저에서 어떻게 변화하는지 확인해 보세요! Flexbox에 익숙해지면 퍼블리싱이 훨씬 즐거워질 거예요!
게시글 목록
| 번호 | 제목 |
|---|---|
| 1418 |
부트스트랩
애니메이션 경고
|
| 1417 |
부트스트랩
경고 닫기
|
| 1416 |
부트스트랩
알림 링크
|
| 1414 |
부트스트랩
부트 스트랩 경고
2
|
| 1413 |
부트스트랩
부트 스트랩 웰스
|
| 1412 | |
| 1411 |
부트스트랩
응답 성있는 삽입
|
| 1410 |
부트스트랩
이미지 갤러리
|
| 1409 |
부트스트랩
반응 형 이미지
|
| 1408 |
부트스트랩
부트 스트랩 이미지 - 미리보기 이미지
|
| 1407 |
부트스트랩
부트 스트랩 이미지 - 원
|
| 1406 | |
| 1405 |
부트스트랩
반응 형 테이블
|
| 1404 |
부트스트랩
문맥 분류
|
| 1403 |
부트스트랩
요약 표
|
| 1402 |
부트스트랩
호버 행
|
| 1401 |
부트스트랩
테두리가있는 표
|
| 1400 |
부트스트랩
부트 스트랩 스트라이프 행
|
| 1399 |
부트스트랩
부트 스트랩 기본 테이블
|
| 1398 |
부트스트랩
부트 스트랩은 HTML <pre>요소
|
| 1397 |
부트스트랩
부트 스트랩은 HTML <kbd>요소
|
| 1396 |
부트스트랩
부트 스트랩은 HTML <code>요소
|
| 1395 |
부트스트랩
부트 스트랩은 HTML <dl>요소
|
| 1394 |
부트스트랩
<blockquote>
|
| 1393 |
부트스트랩
<abbr>
|
| 1392 |
부트스트랩
<mark>
|
| 1391 |
부트스트랩
<small>
|
| 1390 |
부트스트랩
부트 스트랩 텍스트 / 타이포그래피
|
| 1389 |
부트스트랩
2 개의 서로 다른 열
|
| 1388 |
부트스트랩
3 개의 동일한 열
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기