개발자
사진처럼 왼쪽에 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 봇
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일 때 동작합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!