답변:
가장 쉬운 방법은 overflow:hidden
부모 div 를 놓고 높이를 지정하지 않는 것입니다.
#parent { overflow: hidden }
또 다른 방법은 부모 div를 플로팅하는 것입니다.
#parent { float: left; width: 100% }
다른 방법은 명확한 요소를 사용합니다.
<div class="parent">
<img class="floated_child" src="..." />
<span class="clear"></span>
</div>
CSS
span.clear { clear: left; display: block; }
overflow:hidden
힘이 할 수있는 최선은 부모의 자식 요소를 포함 할 수있는 브라우저 그게 전부는 그것을 수정하는 이유..
overflow: hidden
여기에 있다고 생각한다 : link . 그리고 고마워요, 그것은 나를 위해 일했다
overflow: hidden
바로 부모 컨테이너의 흘러 요소의 어떤 부분을 숨 깁니다. 나에게 이것은 특정 비트의 텍스트를 읽을 수 없게 만들었습니다.
문제는 플로팅 요소가 유출되는 것입니다 .
플로팅, 절대 위치 또는 루트 요소 인 경우 요소가 플로우에서 호출 됩니다 .
따라서 유입 요소와 마찬가지로 주변 요소에 영향을 미치지 않습니다 .
이것은 9.5 수레에 설명되어 있습니다 :
플로트가 흐름에 없기 때문에 플로트 상자 전후에 생성 된 배치되지 않은 블록 상자는 플로트가없는 것처럼 수직으로 흐릅니다. 그러나 플로트 옆에 생성 된 현재 및 후속 라인 상자는 플로트의 여백 상자를위한 공간을 만들기 위해 필요한만큼 줄어 듭니다.
10.6 높이 및 여백 계산 에도 지정되어 있습니다. 들어 "정상"블록 ,
정상적인 흐름의 어린이 만 고려됩니다 (즉, 부동 상자 및 절대 위치 상자는 무시됩니다 […]).
문제를 해결하는 방법은 일부 유입 요소를 모든 플로트 아래에 배치하는 것입니다. 그런 다음 부모의 높이가 커져 해당 요소를 래핑합니다 (따라서 수레도).
이것은 속성을 사용 하여clear
얻을 수 있습니다 :
이 속성은 요소 상자의 어느 쪽이 이전의 부동 상자에 인접 하지 않을 수 있는지 나타냅니다 .
따라서 솔루션은 clear: both
플로트의 마지막 형제로 빈 요소를 추가합니다.
<div style="clear: both"></div>
그러나 이는 의미론이 아닙니다. 따라서 부모의 끝에 의사 요소 를 더 잘 생성하십시오 .
.clearfix::after {
clear: both;
display: block;
}
이 방법에는 여러 가지 변형이 있습니다 (예 : 더 이상 사용되지 않는 단일 콜론 구문 :after
을 사용하여 이전 브라우저 지원 또는 과 같은 다른 블록 수준 디스플레이 사용) display: table
.
처음에 정의 된 문제가있는 동작에는 예외가 있습니다. 블록 요소가 블록 서식 컨텍스트를 설정하면 (BFC 루트) 플로팅 내용도 래핑됩니다.
블록 서식 컨텍스트 루트에 대한 10.6.7 '자동'높이에 따르면 ,
요소에 아래쪽 여백 가장자리가 요소의 아래쪽 내용 가장자리 아래에있는 부동 자손이있는 경우 해당 가장자리를 포함하도록 높이가 증가합니다.
또한 9.5 Floats에 설명 된 것처럼 BFC 루트는 다음 때문에 유용합니다.
테이블의 경계 상자, 블록 레벨 대체 요소 또는 새 블록 형식화 컨텍스트를 설정하는 일반 플로우의 요소 […]는 요소 자체와 동일한 블록 형식화 컨텍스트에서 부동 소수점 여백 상자와 겹치지 않아야합니다. .
블록 서식 컨텍스트는
overflow
이외의 블록 박스 visible
, 예.hidden
.bfc-root {
overflow: hidden;
/* display: block; */
}
때 상자를 차단하지 않는 블록 컨테이너 display
로 설정 inline-block
, table-cell
또는 table-caption
.
.bfc-root {
display: inline-block;
}
요소 부동 다음과 같은 경우 float
로 설정 left
하거나 right
.
.bfc-root {
float: left;
}
절대로 배치 된 요소 : when 또는 position
로 설정되어 있습니다.absolute
fixed
.bfc-root {
position: absolute;
}
오버플로 내용 내용 클리핑, 맞춤 알고리즘으로 자동 너비 계산 또는 흐름에서 벗어나는 등 원하지 않는 부수 효과가있을 수 있습니다 . 따라서 문제는 BFC를 설정하는 오버플로가 보이는 인플 로우 블록 레벨 요소를 가질 수 없다는 것입니다.
디스플레이 L3 은 다음과 같은 문제를 해결합니다.
생성
flow
및 내부 디스플레이 유형을 잘 표현 흐름 레이아웃에 표시 유형 및 요소 메이킹에 대한 명시적인 스위치를 만들 BFC의 루트를. (이 같은 해킹에 대한 필요성 제거해야 및 [...])flow-root
::after { clear: both; }
overflow: hidden
안타깝게도 아직 브라우저 지원이 없습니다. 결국 우리는 사용할 수 있습니다
.bfc-root {
display: flow-root;
}
부동 소수점 div(s)
을 div
CSS 에 넣으면 overflow:hidden;
정상적으로 작동합니다.
W3 학교 추천 :
overflow: auto
부모 요소에 놓으면 요소 여백을 포함하여 전체 배경에 "색이 지정됩니다". 또한 플로팅 요소는 테두리 안에 유지됩니다.
http://www.w3schools.com/css/tryit.asp?filename=trycss_layout_clearfix
보다 현대적인 접근 방식은 다음과 같습니다.
.parent {display: flow-root;}
더 이상 명확한 수정 사항이 없습니다.
오버플로 사용 : 숨겨진; 상자 그림자를 숨 깁니다.
LSerni 당신이 나를 위해 그것을 해결 감사합니다 .
이것을 달성하려면 :
+-----------------------------------------+
| +-------+ +-------+ |
| | Text1 | | Text1 | |
| +-------+ +-------+ |
|+----------------------------------------+
이 작업을 수행해야합니다.
<div style="overflow:auto">
<div style="display:inline-block;float:left"> Text1 </div>
<div style="display:inline-block;float:right"> Text2 </div>
</div>
Lucas가 말했듯이 설명하는 것은 float 속성의 의도 된 동작입니다. 많은 사람들이 혼란스럽게 생각하는 것은 float가 CSS 레이아웃 모델의 단점을 보완하기 위해 원래 의도 된 사용법을 훨씬 뛰어 넘었다는 것입니다.
이 속성이 어떻게 작동하는지 더 잘 이해하려면 Floatutorial을 살펴보십시오 .
먼저 쉽게 할 수 있습니다 .div를 유연하게 만들고 내용을 오른쪽 또는 왼쪽으로 정당화하면 문제가 해결됩니다.
<div style="display: flex;padding-bottom: 8px;justify-content: flex-end;">
<button style="font-weight: bold;outline: none;background-color: #2764ff;border-radius: 3px;margin-left: 12px;border: none;padding: 3px 6px;color: white;text-align: center;font-family: 'Open Sans', sans-serif;text-decoration: none;margin-right: 14px;">Sense</button>
</div>