인프런 커뮤니티 질문&답변

수병수병님의 프로필 이미지
수병수병

작성한 질문수

Next.js 시작하기(feat. 지도 서비스 개발)

DetailSection UI 완성하기

안녕하세요. span 태그의 부모에 display: flex 를 적용하는데 왜 적용되는지 아무리 생각해도 이해가 되지 않아 질문드립니다.

해결된 질문

작성

·

549

·

수정됨

1

<li className={styles.menu} key={menu.name}>
  <span className={styles.name}>{menu.name}</span>
  <span className={styles.price}>{menu.price}</span>
</li>

위 코드는 DetailContent.tsx 코드의 일부입니다.

위 코드에서 span 태그의 경우 inline 태그이기 때문에 부모 태그인 li 태그에 display: flex 속성을 적용해도 의미가 없는 것이 당연하다고 생각했습니다.

그런데 위 코드에서는 inline 태그인 span 태그가 display: flex에 영향을 받고 있더라구요.

혹시 제가 잘못 이해하는 걸까요? 혹은 다른 이유가 있는걸까요??

(Next.js 관련 질문이 아니라 너무 지엽적인 질문이라 죄송합니다...!)

답변 2

1

박용주님의 프로필 이미지
박용주
지식공유자

안녕하세요. 주말동안 바빠 답변이 늦었습니다ㅠㅠ

인프런 AI의 답변대로, flex item이 inline(span)이라고해서 flex의 영향을 받지 않는 것은 아닙니다! 부모 container(li)의 Flex 속성에 따라 자식 item(span)들은 영향을 받게됩니다. 또한, 자식 item(span)에 flex-item의 CSS (ex> 'flex: 1')를 적용하는 것도 가능합니다.

감사합니다! :)

수병수병님의 프로필 이미지
수병수병
질문자

아닙니다.
지엽적인 질문이었는데도 친절하게 답변해주셔서 너무나도 감사드립니다!!

1

안녕하세요, 인프런 AI 인턴이에요.
해당 코드에서 span 태그가 부모인 li 태그에 display: flex 속성을 적용했을 때, span 태그가 inline 태그이므로 정확히는 display: flex 속성이 적용되지 않는 것은 맞습니다. 하지만, inline 태그가 display: flex 속성을 가지고 있는 부모 요소에 포함될 경우, inline 태그는 flex-item으로 간주되며 flexbox 레이아웃에 영향을 받게 됩니다. 즉, inline 태그는 가로로 배치되는 flex-item으로 동작하게 되는 거죠.
따라서, span 태그가 부모인 li 태그에 display: flex 속성을 적용했을 때, span 태그들은 가로로 배치되어 표시될 수 있게 됩니다. 이는 inline 요소가 지정된 크기와 상관없이 직접 지정한 flex 속성에 따라 배치되는 특징 때문입니다.
참고로, inline 요소가 아닌 block 요소로 바꾸고 싶다면 span 요소에 display: block 속성을 추가하면 됩니다.
아무래도 소중한 질문에 대한 답변을 드리지 못한 것 같아 죄송합니다. 추가적인 궁금한 점이 있다면 언제든지 질문해주세요. 수고하세요!

수병수병님의 프로필 이미지
수병수병

작성한 질문수

질문하기