코드스테이츠 프론트엔드 부트캠프

[CSS] flex의 활용(서로 다른 column에 있는 item 어긋남 해결하기)

JeanneLee57 2023. 2. 16. 14:11

오늘은 CSS flex 활용법을 공부했다.

혼자서 공부할 때 레이아웃을 짜느라 고생이 많았는데 flex를 활용하니 레이아웃 짜기가 훨씬 수월했다!

 

레이아웃의 흑역사

오늘 flex 수업을 듣기 전에 생활코딩으로 예습을 했는데

flex 첫 수업에서 '레이아웃의 흑역사'를 소개하면서 시작한 것이 아주 인상적이었다.

 

생활코딩 flex-1

요지는 인류 역사 동안 레이아웃을 코드로 잘 표현하는 방법을 찾기 위해 고군분투 해왔다는 것인데

 

레이아웃을 짜는 데 활용되는 여러 코드들의 차이점을 알려 줘서 매우 유익했고,

또 내가 레이아웃을 짜느라 고생한 것이 그리 이상한 일은 아니었다는 점을 알게 돼 위안이 됐다.😂

 

서로 다른 column에 있는 item 어긋남 해결하기

오늘 수업에서는 flex를 활용해 직접 레이아웃 예제를 작성해 보았다.

레이아웃 짜기 예제는 위와 같은 것이었는데, 다른 부분은 수월했지만 해결하기 까다로운 한 가지가 있었다.

바로 두번째 column의 두번째 item 끝부분과 세번째 item 첫번째 끝부분이 어긋난다는 것이었다.

 

이런 문제가 생긴 원인을 알기는 어렵지 않았다.

 

두번째 column에는 item에 각각 flex-grow를 2,2,1

세번째 column에는 각각 4와 1씩 주었는데,

두번째 column에는 item이 총 세개이기 때문에 마진값과 border값이 추가돼

총 7px(마진 5px + border 1px*2)이 어긋나게 된 것이었다.

 

해결책을 찾아 헤맨 끝에 마침내 같은 문제를 겪고 있는 사람의 질문글을 찾아 내 해결할 수 있었다.

 

 

해결책

.col3>.item:nth-child(1){
    flex-basis: calc(80% + 7px);
}

.col3>.item:nth-child(2){
   flex-basis: 20%;
}

 

해결책은 flex-grow가 아니라 flex-basis를 활용하고,

세번째 column의 첫번째 item에 7px을 추가한 80%값을 넣어 주는 것이었다.

 

해결!!

 

해결에 참고한 레퍼런스

내가 참고한 질문글은 stack overflow의 다음 글이었다.

 

 

flex-grow not sizing flex items as expected

It seems that the content inside a flex div affects its calculated size concerning the flex-grow property. Am I doing something wrong? In the fiddle provided below, you'll see a number pad. All the

stackoverflow.com

 

내가 겪는 문제는 남도 분명히 겪고 있다!

다만 찾기가 좀 힘들 수도 있을 뿐...😂😂