본문 바로가기

UIUX Web Standard/COA Lab's CSS

css 위치와 공간 해석 - float

float 은 한 요소(element)가 보통 흐름(normal flow)으로부터 빠져나와 텍스트 및 인라인(inline) 요소가 그 주위를 감싸는 자기 컨테이너의 좌우측을 따라 배치되어야 함을 지정합니다.

float 은 left, right, none, static 등으로 속성값을 부여할 수 있다.

float:left는  원래 좌측으로 보내라는 의미로 흔히 받아들이고 있다. 

그렇다고 해서, float을 위치를 지정하는데 사용한다고 무조건 해석하면 무리가 있을때가 있다. 

float:left는 이미지와 같은 요소의 옆에 글씨를 작성했을 때,

아래 그림처럼 글씨가 이미지의 하단에서부터 시작하게 되는데, 이를 이미지와 같은 높이에서부터 시작하도록 하기 위해 사용하는 속성이라고 할 수 있다.

아래 첫번째 그림처럼 이미지 옆에 글씨를 쓰면, 이미지의 우측 하단 공백서부터 글자가 채워진다. 

 

 

아래는 이미지에 float:left를 주어 글씨가 이미지의 상단에서부터 쓰여지도록 하는 것이다. 

 

 

float:left 가 적용되면, 이미지가 좌측의 공간을 차지 하게 되는데,

그렇다고 해도, 우측으로 오는 텍스트의 공간은 아래 그림의 배경색이 채워진 것 처럼 이미지 하단에 채워지고 있는걸 볼 수 있다. 

즉, 빨간색 상자는 (이게 이미지든, 블록 박스든) float(부유하다, 둥둥 떠있다.)의 개념, 즉 부유하고 있는 것이고, 

다만 float의 특징으로, 요소의 옆에 글자가 채워지게 되는 것이지만, 배경색이 보이는 것처럼 공간에 겹침은 있는 것이다. 이점이 유의할 사항~! 이게 Bloack formatting Context이다. 이 부분은 해당 글을 참고하시오. 


텍스트를 가지고 있는 블록의 경우 마찬가지로 빨간 상자들은 float 속성을 주고, 가운데 문단이 들어간 요소는 float 없이 배경색만 줬을 때, 아래그림처럼, 배경색이 전체에 들어가는 걸 확인해 볼 수 있다. 


<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  
  <title>Document</title>
  <style>
	#wrap{width:500px;border: 10px solid #003049;padding:10px;}
	.box1, .box2{width:100px;height:100px;background: #d62828;color:#fff;margin:10px;}
	.box1{float: left;}
	.box2{float: right;}
	.para{background: #cbc0d3;}
  </style>
 </head>
 <body>
  <div id="wrap">
	<div class="box1">box1</div>
	<div class="box2">box1</div>
	<div class="para">
	float:left 가 적용되면, 이미지가 좌측의 공간을 차지 하게 되는데,

	그렇다고 해도, 우측으로 오는 텍스트의 공간은 아래 그림의 배경색이 채워진 것 처럼 이미지 하단에 채워지고 있는걸 볼 수 있다. 

	즉, 빨간색 상자는 (이게 이미지든, 블록 박스든) float(부유하다, 둥둥 떠있다.)의 개념, 즉 부유하고 있는 것이고, 

	다만 float의 특징으로, 요소의 옆에 글자가 채워지게 되는 것이지만, 배경색이 보이는 것처럼 공간에 겹침은 있는 것이다. 이점이 유의할 사항~!
	</div>
  </div>
 </body>
</html>