일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 티스토리챌린지
- storybook
- go
- 웹애플리케이션서버
- test
- java
- Spring
- RTK
- backend
- javascript
- designpatterns
- Gin
- satisfiles
- frontend
- tanstackquery
- typescript
- 오블완
- React
- Redux
- JavaSpring
- css
- Chakra
- golang
- JPA
- ReactHooks
- hook
- component
- springboot
- react-hook-form
- Today
- Total
bkdragon's log
flex-item 본문
flex-item에 사용하는 속성들이 헷갈려서 정리 좀 해두려고 한다.
flex-basis
flex 아이템의 기본 크기를 설정한다. flex-direction에 따라 width(row)와 height(column)를 설정한다.
다만 단순히 width, height가 아닌 min-width, min-height 처럼 동작한다.
.item {
flex-basis: 100px;
}
만약 이렇게 설정했다면 원래 100px가 안되던 아이템은 100px로 늘어나고 100px 넘는 아이템은 컨텐츠의 길이만큼 설정된다.
.item {
flex-basis: 100px;
word-break: break-word;
}
100px 넘어가던 item이 100px이 넘어가지 않게 하고 싶으면 word-break를 통해 컨텐츠를 줄바꿈 하여 할 수 있다.
flex-grow
flex-grow는 flex 아이템의 길이가 basis보다 늘어나게 할 수 있는 속성이다. 이때 flex-box의 사이즈에 맞게 늘어나게 된다. 기본값은 0이다.
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
이런 마크업이 있다.
.container {
width: 1200px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 16px;
border: 1px solid red;
padding: 20px;
}
.item {
flex-basis: 100px;
height: 100px;
overflow-y: hidden;
border: 1px solid black;
word-break: break-word;
/* flex-grow: 1; */
}
css는 이러하다. 그럼 이런 화면을 볼 수 있다.
이제 여기서 flex-grow의 주석을 풀면?
이렇게 늘어난다! 이때 두번째 아이템에만 flex-grow값에 2를 적용하면
이렇게 된다. 값에 따라 늘어나는 비율을 정할 수 있는 것이다.
flex-shrink
flex-shrink는 flex-grow와 반대이다. flex-basis 보다 작아질 수 있게 된다. 기본값이 1이여서 flex-box의 크기가 줄어들면 같이 줄어든다. 0으로 설정하게 되면 크기가 변하지 않는 고정의 길이를 갖는 아이템이 된다.
위의 코드와 같은 상황에서 container의 width를 200px로 줄이고 flex-shrink의 값을 0을 주면 다음과 같이 된다.
flex-box의 크기와 관계없이 100px을 유지하는 것을 확인할 수 있다.
flex
flex는 grow, shrink, basis 순으로 한번에 적용할 수 있다.
.item {
flex: 1 1 0;
}
.item:nth-child(2) {
flex: 2 1 0;
}
이렇게 작성하면 basis는 0이지만 grow가 1이상이기 때문에 길이가 늘어나는데 1:2:1 비율로 늘어나게 된다.
glow와 shrink의 포인트는 flex-container의 크기에 따라 늘어날 수 있는지 줄어들 수 있는지다. 헷갈리지 말자.
'concept' 카테고리의 다른 글
CSS 프레임워크로 atomic design pattern 적용하기 (0) | 2023.09.02 |
---|---|
[Redux-toolkit] 비동기 처리하기 (0) | 2023.09.01 |
MVVM 패턴 (0) | 2023.08.10 |
module css, classnames로 조건부 스타일링 (0) | 2023.08.07 |
Async Custom Hook Testing (0) | 2023.08.02 |