플렉스 아이템이 늘어나지 않도록 방지


94

견본:

div {
  display: flex;
  height: 200px;
  background: tan;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

두 가지 질문이 있습니다.

  1. 기본적으로 왜 발생 span합니까?
  2. 플렉스 컨테이너의 다른 플렉스 아이템에 영향을주지 않고 늘어나는 것을 방지하는 올바른 접근 방식은 무엇입니까?

답변:


164

스팬 높이를 늘리고 싶지 않습니까?
컨테이너의 전체 높이를 늘리지 않도록 하나 이상의 플렉스 아이템에 영향을 줄 수 있습니다.

컨테이너의 모든 플렉스 아이템에 영향을 미치려면 다음을 선택하십시오.
로 설정align-items: flex-start;해야div하며이 컨테이너의 모든 플렉스 아이템은 콘텐츠의 높이를 가져옵니다.

div {
  align-items: flex-start;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

단일 플렉스 아이템에만 영향을 미치려면 다음을 선택하십시오.
컨테이너에서 단일 플렉스 아이템을 확장 해제align-self: flex-start;하려면이 플렉스 아이템으로 설정해야합니다. 컨테이너의 다른 모든 플렉스 아이템은 영향을받지 않습니다.

div {
  display: flex;
  height: 200px;
  background: tan;
}
span.only {
  background: red;
  align-self:flex-start;
}
span {
    background:green;
}
<div>
  <span class="only">This is some text.</span>
  <span>This is more text.</span>
</div>

왜 이런 일이 발생 span합니까?
속성의 기본값 align-itemsstretch입니다. 이것은 왜 이유 span의 높이를 채울 div.

차이 baselineflex-start?
글꼴 크기가 다른 플렉스 항목에 텍스트가있는 경우 첫 번째 줄의 기준선을 사용하여 플렉스 항목을 세로로 배치 할 수 있습니다. 글꼴 크기가 더 작은 플렉스 항목은 컨테이너와 상단 자체 사이에 약간의 공간이 있습니다. 로 flex-start플렉스 항목 (공백없이) 컨테이너의 상단으로 설정됩니다.

div {
  align-items: baseline;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
span.fontsize {
  font-size:2em;
}
<div>
  <span class="fontsize">This is some text.</span>
  <span>This is more text.</span>
</div>

당신은의 차이에 대한 자세한 정보를 찾을 수 있습니다 baseline그리고 flex-start여기
플렉스 스타트 및 기준의 차이는 무엇입니까?


1
답변 해 주셔서 감사하지만 모든 플렉스 항목에 영향을 미칩니다. 그리고 질문 : baselineflex-start가치 의 차이점은 무엇 입니까? 그들의 결과는 같은 것 같습니다. 상황에 따라 다를 수 있습니까?
Mori

멋지다! baselineflex-start값 의 차이도 알려 주시면 감사하겠습니다 .
Mori


팁 : 가로로 정렬하려면 다음을 사용하십시오. align-items: center;:)
Ricardo Zea

#Hack : 요소를 새 div로 래핑합니다. 그러면 새 상위 div가 확장되고 요소는 그대로 유지됩니다.
user1948585
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.