본문 바로가기
Front-end/CSS

flex-basis과 width 차이

by mooyou 2021. 11. 9.
728x90
300x250

 

 

flex-basis에 대한 설명은 앞 포스팅을 참고하세요

flex-basis는 기본 크기를 설정하는 것이고 width는 가로 값을 설정하는 속성이라 얼핏 비슷해 보입니다.

 

.item:nth-child(1) {
    flex-basis: 200px;
}
.item:nth-child(2) {
    width: 200px;
}

 

아래와 같이 1번째 item에는 flex-basis를 2번째 item에는 width를 설정하고 결과를 확인해보면 차이가 없기 때문에 그게 그거 아닌가 하는 생각이 들 수 있습니다.

그럼 구지 따로 쓸 필요가 없겠죠?

 

 

flex-basis과 width 차이점

 

1. flex-direction 설정값에 따라서 달라진다.

그렇다면 flex-direction을 변경해 주면 어떻게 될까요?

.container {
    flex-direction: column;
}

 

 

이렇게 결과가 다르게 나타납니다.

width는 계속 넓이 값만 200px로 지정하는 반면에

flex-basis로 지정할 경우 flex-direction 속성 값에 따라서 row일 경우에는 width값을 column일 경우에는 height값을 설정하게 됩니다.

따라서 column값으로 변경했기 때문에 1번째 item은 높이 값이 200px로 나타나게 됩니다.

 

 

 


 

 

2. flex 아이템에 설정된 너비 값보다 더 큰 컨텐츠가 들어올 경우

 

아래의 css 처럼 item의 너비 값은 100px인데 그 안에 img가 200px인 경우

.item > img {
    width: 200px;
    height: 200px;
}

.item:nth-child(1) {
    flex-basis: 100px;
}
.item:nth-child(2) {
    width: 100px;
}

 

 

 

결과를 보시면 flex-basis로 지정한 영역은 100px로 설정해 준 것과 상관없이 콘텐츠 너비에 따라서 늘어나는 걸 확인할 수 있습니다. 반면에 width로 설정한 경우 더 큰 자식 요소가 들어와도 상관없이 그대로 100px의 값을 유지하는 것을 볼 수 있습니다.

flex-basis는 좀 더 유연한 반면 width는 강제적이라고 볼 수 있습니다.

 

 

 

※ flex-basis와 width를 동시에 적용할 경우 flex-basis가 우선순위를 갖게 됩니다.

 

728x90
반응형

'Front-end > CSS' 카테고리의 다른 글

css 말줄임 여러줄 일 때  (0) 2021.11.13
flex-shrink 속성  (0) 2021.11.10
flex-basis란?  (0) 2021.11.08
flex-grow 사용법  (0) 2021.11.05
css 도넛 모양 bullet 만들기  (0) 2021.11.04

댓글