>  기사  >  웹 프론트엔드  >  CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)

CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)

青灯夜游
青灯夜游원래의
2018-09-17 11:21:356237검색

프론트엔드 개발 과정에서 우리는 좋아하기도 하고 싫어하기도 하는 속성인 float를 자주 사용합니다. 플로팅을 통해 쉽게 레이아웃을 만들 수 있어서 좋고, 플로팅 후에 해결해야 할 문제가 너무 많아서 싫습니다. 이 장에서는 CSS에서 부동 소수점을 지우는 이유와 부동 소수점을 지우는 방법을 소개하고 요소가 부동 소수점을 제거한 후에 발생하는 문제와 CSS에서 부동 소수점을 제거하는 여러 가지 방법을 알려줍니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 왜 뜨나요?

플로팅(float)을 사용하는 가장 근본적인 이유는 텍스트 감싸기 효과를 얻기 위한 것입니다. 나중에 누군가는 이를 레이아웃에 사용하는 것이 꽤 좋으며 기존 레이아웃의 일부 결함을 보완할 수 있어 매우 편리하다는 것을 알게 되었습니다.

2. 왜 플로트를 지워야 하나요? CSS 클리어 플로트의 역할은 무엇인가요?

Float(부동)은 다른 부동 상자나 외부 가장자리에 있는 포함 상자를 만날 때까지 부동 상자를 왼쪽 및 오른쪽으로 이동하도록 제어할 수 있습니다. 플로팅 상자는 문서 흐름의 일반적인 흐름에 속하지 않습니다. 요소가 플로팅되면 블록 수준 요소의 레이아웃에 영향을 주지 않고 인라인 요소의 레이아웃에만 영향을 미칩니다. 이때 문서 흐름의 정상적인 흐름은 플로팅 박스에 동일한 레이아웃 모드가 없음을 보여줍니다. 컨테이너 박스의 높이가 플로팅 박스보다 작을 경우 "높이 붕괴"가 발생합니다: CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)

위 그림에서 상위 요소의 높이는 패딩 효과이며, 상위 요소에는 높이가 설정되지 않았습니다.

상위 요소의 높이가 설정되지 않은 경우:

  • 상위 요소의 하위 요소가 부동으로 설정되지 않은 경우 상위 요소의 높이가 자동으로 확장되고 높이 값이 나타납니다. ;

  • 부모 요소의 자식 요소가 부동으로 설정된 경우 부모 요소의 높이는 자동으로 확장되지 않으며 높이 값도 없습니다.

이러한 방식으로 float를 설정한 후에 다음과 같은 몇 가지 문제가 있음은 분명합니다.

  1. 상위 요소의 여백이 영향을 받고 위쪽, 아래쪽, 왼쪽 및 오른쪽 가운데 맞춤을 달성할 수 없습니다.

  2. 부모 요소의 높이가 설정되지 않은 경우 플로팅 후 부모 요소의 여백 높이가 늘어나지 않으면 부모 요소가 디스플레이에 표시되지 않습니다.

예시 설명(배경색)

플로트가 지워지지 않음:

CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)

플로트가 지워진 후:

CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)

3. 플로트가 지워지지 않는 방법

다음은 CSS 삭제를 소개합니다. 부동 숫자 방법(위 그림의 효과를 얻으려면):

1. 명확한 속성이 있는 빈 요소를 사용하세요.

부동산을 지우려면 빈 레이블을 사용하세요. 상위 요소 내의 모든 부동 요소 뒤에 빈 레이블을 추가하세요. 제거해야 하는 항목(이론은 모든 태그일 수 있지만 일반적으로

에 사용됨) 부동 소수점을 지우고 CSS 코드clear:both를 정의합니다.

코드 예:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			.demo{
				width: 500px;
				margin: 50px auto;
				background-color: #CCCCCC;
			}
			.left{
				width: 100px;
				height: 100px;
				float: left;
				background-color: #21B4BB;
			}
			.right{
				width: 100px;
				height: 50px;
				float: right;
				background-color: #21B4BB;
			}
			.clear{
				clear:both;
			}
		</style>
	</head>
	<body>
		<div class="demo">
			<div class="left">left</div>
			<div class="right">right</div>
			<div class="clear"></div>
		</div>
	</body>
</html>

장점: 간단하고 코드가 적으며 브라우저 호환성이 좋습니다.

단점: 의미 없는 HTML 요소를 많이 추가해야 하고, 코드가 충분히 우아하지 않으며, 나중에 유지 관리가 쉽지 않습니다.

2. CSS의 오버플로 속성을 사용하세요.

플로트를 지우려면 오버플로를 사용하세요. 플로트를 지워야 하는 요소에 CSS 코드 Overflow:auto 또는 Overflow:hidden을 정의하면 됩니다.

코드 예시:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			.demo{
				width: 500px;
				margin: 50px auto;
				background-color: #CCCCCC;
				overflow:hidden
			}
			.left{
				width: 100px;
				height: 100px;
				float: left;
				background-color: #21B4BB;
			}
			.right{
				width: 100px;
				height: 50px;
				float: right;
				background-color: #21B4BB;
			}
		</style>
	</head>
	<body>
		<div class="demo">
			<div class="left">left</div>
			<div class="right">right</div>
		</div>
	</body>
</html>

장점: 구조적, 의미적 문제가 없으며, 코드의 양이 매우 적습니다.

단점: 내용이 늘어나면 자동으로 줄바꿈이 되지 않아 내용이 엉키기 쉽습니다. 숨겨야 하고 오버플로되어야 하는 요소는 표시할 수 없습니다

3. CSS :after 의사 요소

를 사용하여 상위 요소에 :after 의사 요소를 사용하고 display:table

display를 설정합니다. :table 생성된 요소가 블록 수준 테이블에 표시되고 나머지 공간을 차지하도록 합니다.

콘텐츠를 통해 마지막 요소로 콘텐츠를 생성합니다: " ". 클래식 CSS는 콘텐츠가 "."일 수 있습니다.

코드 예:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			.demo{
				width: 500px;
				margin: 50px auto;
				background-color: #CCCCCC;
				*zoom: 1;
			}
			.demo:after { 
				content: " ";
				display: table; 
				clear: both;  
			}  
			.left{
				width: 100px;
				height: 100px;
				float: left;
				background-color: #21B4BB;
			}
			.right{
				width: 100px;
				height: 50px;
				float: right;
				background-color: #21B4BB;
			}
		</style>
	</head>
	<body>
		<div class="demo">
			<div class="left">left</div>
			<div class="right">right</div>
		</div>
	</body>
</html>

단점: 최신 브라우저에 적합, IE6/7을 지원하지 않음, *zoom: 1은 IE6/7과 호환됨

위 내용은 CSS 클리어 플로트의 기능은 무엇인가요? 플로트 청소 방법(소개)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.