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에 익숙해지면 퍼블리싱이 훨씬 즐거워질 거예요!
게시글 목록
| 번호 | 제목 |
|---|---|
| 1451 |
부트스트랩
Disabled Item
|
| 1450 |
부트스트랩
활성 상태
|
| 1449 |
부트스트랩
링크 된 항목으로 그룹 나열
|
| 1448 |
부트스트랩
부트 스트랩 배지가있는 목록 그룹
|
| 1447 |
부트스트랩
부트 스트랩 목록 그룹
|
| 1446 |
부트스트랩
Bootstrap Pager 버튼 맞춤
1
|
| 1445 |
부트스트랩
Bootstrap Pager
|
| 1444 |
부트스트랩
Breadcrumbs
|
| 1443 |
부트스트랩
Pagination Sizing
|
| 1442 |
부트스트랩
부트스트랩 Disabled State
|
| 1441 |
부트스트랩
부트스트랩 활성 상태
|
| 1440 |
부트스트랩
부트 스트랩 페이지 매김
|
| 1438 |
부트스트랩
스택 된 진행률 표시 줄
|
| 1437 |
부트스트랩
애니메이션 진행률 표시 줄
|
| 1436 |
부트스트랩
스트라이프 진행 표시 줄
|
| 1435 |
부트스트랩
컬러 진행 바
|
| 1434 |
부트스트랩
레이블이있는 진행 표시 줄
|
| 1433 |
부트스트랩
부트 스트랩 진행률 표시 줄
|
| 1432 |
부트스트랩
레이블
|
| 1431 |
부트스트랩
부트 스트랩 배지 및 라벨
|
| 1430 |
부트스트랩
부트 스트랩 글리펀콜
|
| 1429 |
부트스트랩
분할 단추 드롭 다운
|
| 1428 |
부트스트랩
중첩 단추 그룹 및 드롭 다운 메뉴
|
| 1427 |
부트스트랩
양쪽 맞춤 버튼 그룹
|
| 1426 |
부트스트랩
세로 단추 그룹
|
| 1425 |
부트스트랩
버튼 그룹
|
| 1424 |
부트스트랩
활성 / 비활성 버튼
|
| 1421 |
부트스트랩
블록 레벨 버튼
|
| 1420 |
부트스트랩
단추 크기
1
|
| 1419 |
부트스트랩
부트 스트랩 버튼
1
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기