개발자

css flex 질문이요

2024년 05월 06일조회 80

사진처럼 왼쪽에 nav(메뉴)를 배치하고, 오른쪽에는 해당 메뉴에 대한 컴포넌트를 배치할 건데요 flex를 줘서 구현하려고 했어요. nav에는 너비를 지정하고, 오른쪽 컴포넌트는 너비를 100%로 했더니 왼쪽 nav가 줄어들더라고요.. nav는 정해진 너비(예를 들어 200px)를 유지하고 오른쪽 컴포넌트는 전체로 채우는 방법을 알려주세요.. ㅠㅠ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

김용현님의 프로필 사진

생각해볼 수 있는 한가지 방법으로, flex의 shrink 속성에 대해 한번 살펴보시는 것을 추천드립니다. 간단한 설명에 앞서 제가 사용할 단어들을 먼저 정의하고 진행해보겠습니다. - container : flex 속성이 적용되어 있으며, 정렬할 요소를 감싸고 있는 외부 요소 - item : container 내부에서 정렬하고자 하는 요소들 Flex가 적용된 container의 주축 방향 길이의 합보다, item의 주축 방향 길이의 합과 gap의 길이가 더 길 경우, item들의 길이는 자동으로 줄어들게 됩니다. 질문자분의 예시로 확인해보자면, 전체를 감싸는 Flex가 적용된 "요소의 가로 길이"보다 "Nav 영역의 가로 길이"와 "Main 영역의 가로길이" 그리고 "그 사이의 gap"의 합이 더 크기 때문에, 각 요소들의 길이를 줄이게 되는 것입니다. 따라서 특정 요소의 길이를 줄이지 않게 하기 위해서, "이 길이 줄이지 마!"라는 CSS를 적용해야 하는데 이것을 위해 사용해야 하는 것은 flex-shrink 속성입니다. 질문자분의 문제상황을 해결하기 위해선, Nav의 속성에 flex-shrink: 0을 적용한다면 원하시는 UI를 구현할 수 있을 것 같습니다. 정확하게 사용하는 방법은 아래의 flex-shrink mdn을 참고하시고 사용해보시면 좋을 것 같습니다. (정확히 코드가 올라온 것이 아니기 때문에, 단순 추측으로 말씀드려 명쾌한 답변이 되지 않을 수 있다는 점 양해부탁드립니다) 추천 참고 자료: https://developer.mozilla.org/ko/docs/Web/CSS/flex-shrink

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 05월 06일

너비가 100%인 컴포넌트에 flex-grow 속성을 사용해보세요. 이는 부모 요소 내부의 남은 공간을 채우는 데 사용되며, 해당 속성이 있는 요소는 형제 요소가 차지하지 않은 나머지 공간을 사용하게 됩니다. 아래 CSS 코드 예시를 확인해 주세요. ```css .container { display: flex; } .nav { /* 너비 적용 */ width: 200px; } .right-component { /* 남은 공간 채우기 */ flex-grow: 1; } ``` 위 코드를 적용하면, .nav 클래스에는 정확히 200px의 너비가 지정될 것이고, .right-component 클래스에는 남아있는 너비가 모두 할당됩니다. `.container`가 flex container이고, 그 아래의 `.nav`와 `.right-component`가 그 container의 children일 때 동작합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!