css 레이아웃에서 BFC란?
3613 단어 css
Block Formatting Context에서는 각 요소의 왼쪽 바깥쪽이 블록이 포함된 왼쪽(오른쪽에서 왼쪽으로 포맷되고 오른쪽 바깥쪽이 오른쪽으로 닿는 경우)에 부동이 있더라도 (요소의 내용 영역이 부동으로 인해 압축되지만 이 요소가 새 Block Formatting Context를 만들지 않는 한) 부동이 있습니다.
example:
many text and pic here
~~~ .dimg과div.mainCon의 왼쪽 바깥쪽 테두리는div.con의 왼쪽 테두리와 접촉하는데div.mainCon의 내용이 비교적 많을 때 주위를 둘러싼 부동으로 나타난다.div.mainCon 요소를 트리거하는 BFC는 부동 요소를 둘러싸지 않고 2열 레이아웃을 구현하는 himg 요소
요소의 BFC를 트리거하는 방법:
1. 부동을 설정하면 div.mainCon의 폭이 내용에 따라 달라집니다. div.con의 나머지 폭이 div.mainCon의 내용을 수용하지 못할 때 줄이 바뀝니다. 2열 레이아웃을 확보하려면div.mainCon의 폭을 지정해야 합니다.
2. 오버플로우:hidden 설정하기;2열 레이아웃, div.mainCon은 용기의 남은 너비에 적응하지만, 넘침 숨기기를 설정하여 div.mainCon 밖에서 다른 요소를 레이아웃할 수 없습니다. (예를 들어 화살표 부동 메뉴...)
주의 (overflow:hidden 설정 또는 overflow:auto; 요소는 넘쳐나는test in chrome 숨기기)
3. display: inline-block 또는 display:table-caption 효과는float,div.mainCon 너비와 내용에 따라 내용이 많고 줄이 바뀔 수 있습니다. 너비를 설정해야 2열 레이아웃을 확보할 수 있습니다.
4.display:table-cell 효과는float와 같고 너비는 내용에 따라 얼마나 많은 내용이 있는지 줄을 바꿀 수 없습니다. 너비를 설정하지 않아도 2열 레이아웃을 확보하고ie6-7이display:table-cell을 지원하지 않는지 확인하세요.
5.position:absolute; 디스플레이:table-cell과 호환성
BFC란 무엇인가?
시각화된 레이아웃과 관련될 때 Block Formatting Context는 HTML 요소가 이 환경에서 일정한 규칙에 따라 레이아웃되는 환경을 제공합니다.한 환경의 요소는 다른 환경의 레이아웃에 영향을 주지 않습니다.예를 들어 부동 원소는 BFC를 형성하는데 부동 원소 내부의 하위 원소는 주로 이 부동 원소의 영향을 받고 두 부동 원소 사이에는 서로 영향을 주지 않는다.여기에는 BFC가 하나의 독립된 행정 단위라는 뜻과 약간 비슷하다.
BFC 구성 방법
4
4
4
4
BFC의 역할
1. 부동원소와 중첩되지 않는다
만약에 부동 원소 뒤에 비부동 원소가 따라가면 덮어쓰는 현상이 발생하고 많은 적응된 두 개의 난간 구조가 이렇게 한다.다음 그림의 효과
<div style="float:left; border: 2px solid red"> 123</div>
<p style="border: 2px solid blue;display:block;overflow:hidden;*zoom:1">
The quick brown fox jumped over the 4seohunt.com lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
</p>
2. 요소 내부 부동 제거
부원소를 BFC로 설정하면 부동의 영향(즉 부원소의 높이가 내려앉는 것)을 제거할 수 있다. 가장 흔히 볼 수 있는 방법은 부원소에overflow:hidden 양식을 설정하고 IE6에zoom:1을 더하면 된다(IE Haslayout).
3. 중첩된 요소Margin 여백 축소 문제 해결
BFC의 정의에 따르면 같은 BFC에 속할 때만 두 원소가 수직 Margin의 중첩이 발생할 수 있다. 이것은 인접 원소를 포함하고 덧붙인 원소를 포함하는데 그들 사이에 가로막힘(예를 들어 테두리, 비공개 내용,padding 등)이 없으면 Margin이 중첩된다.
따라서 Margin의 중첩 문제를 해결하려면 같은 BFC에 두지 않으면 된다. 그러나 두 개의 인접 원소에 있어서는 의미가 크지 않고 껍질을 씌울 필요가 없다. 그러나 끼워 넣는 원소에 있어서는 매우 필요하다. 부원소를 BFC로 설정하면 된다.이렇게 원소의margin은 부원소의margin과 중첩되지 않을 것이다.
prev div
i am title
div.pre와 div.next의 수직 간격은 100px이다.div.next와 그 내부의 h2는 같은 BFC에 속하기 때문에 수직margin이 중첩되었다(h2의 수직margin천은 부원소와 다른 원소의 관계에 영향을 미친다).
해결 방법:
1.margin-top 2개가 서로 인접하지 않도록(div.next의margin-top:10px와h2의margin-top:100px), 부원소의border나padding을 설정합니다
2. 부모 요소의 BFC를 터치하여 독립된 레이아웃 단원을 형성한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
장치 너비가 특정 너비보다 크고 특정 너비보다 작을 때 웹 페이지 CSS 스타일을 변경하는 방법은 무엇입니까?장치 너비가 특정 너비보다 크고 특정 너비보다 작을 때 웹 페이지 CSS 스타일을 변경하려면 @media의 미디어 쿼리 구문을 사용한 다음 구문을 작성하여 스타일의 최소 너비를 정의해야 합니다. 적용된 후 and라는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.