float์ ํน์ฑ
float์ด ์ ์ฉ๋ ์์๋ ๊ทธ ํ๋ฆ์์ ๋ฒ์ด๋์ ๋ ์ด์์ ์ ๋์์ง๊ฒ ๋๋ค.
์ฃผ๋ณ ํ ์คํธ๋ ์ธ๋ผ์ธ ์์๊ฐ ์ฃผ์๋ฅผ ๊ฐ์ธ๋ ํน์ง์ด ์๋ค.
float์ผ๋ก ์์์ ์์๋ฅผ ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ ค๊ณ ํ์ง๋ง float์ ํน์ง๋๋ฌธ์ ์ฃผ๋ณ ์์๋ค์ ์ํฅ์ ๋ผ์ณ์ ์ํ๋๋๋ก ๋ ธ์ถ์ด ๋์ง ์์.
์ด๋ฐ ํ์๋ค์ ๋ง๊ณ ๋ค์ float์ ํ์์ด ์ง์๋๋๊ฒ์ ๋ง๋ ๋ฐฉ๋ฒ์ float์ ํด์ ํ๋ค๋ผ๊ณ ํํ.
- ๋ถ๋ชจ ์์ height ๋ถ์ฌ
์์์ ๋์ด๊ฐ์ ๊ฐ์ธ๊ณ ์๋ ๋ถ๋ชจ ์์์๊ฒ๋ ๋์ผํ ๋์ด๊ฐ์ ์ค์ ์์ ์์๋ฅผ ๊ฐ์ ์ ์๋ ํํ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ.
<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
height: 100px; /* ์์์ธ .box๋ค์ ๋์ด๊ฐ์ด ๊ณ ์ ์ผ๊ฒฝ์ฐ ๊ฐ์ ๋์ด๊ฐ์ ๋ถ์ฌํจ. */
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
background-color: pink;
}
์ด ๋ฐฉ๋ฒ์ ์ ์ฒด์ ํ๋ฆ์ ๋ฐฉํดํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ผ๋ฟ
๊ทธ๋ฆฌ๊ณ ์ ํํ๊ฒ๋ float์ด ํด์ ๋๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋์์๊ณผ ๊ฐ์ ํด์ ๋ฐฉ๋ฒ์ด๋ค.
์์์ ๋์ด๊ฐ ๋ณํํ ๋ ๋ถ๋ชจ์ ๋์ด๊ฐ์ ์์์ ๋์ด๊ฐ์ ๋ํด ์๋ ดํ์ง ๋ชปํ๋ ํ์์ด ๋ฐ์ํ๋ค.
์ฆ ์ด ๋ฐฉ๋ฒ์ ์์ ์์๊ฐ ๊ณ ์ ๋ ๋์ด๊ฐ์ ๊ฐ์ง๋ฉฐ, ๋ถ๋ชจ ์ญ์ ๊ณ ์ ๋ ๋์ด๊ฐ์ ๊ฐ์ง ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์๋ค.
- ๋ถ๋ชจ ์์์ float ์์ฑ
๋ถ๋ชจ ์์์ float์์ฑ์ด ์๋ ๊ฒฝ์ฐ
์์์์๊ฐ ์ข์ฐ๋ก floating๋์ด์์๋ ๋ถ๋ชจ๊ฐ float๊ฐ์ ๊ฐ์ง๋ฉด ๋ถ๋ชจ ์์๋ ์์ ์์์ ๋์ด๊ฐ์ ์๋ ดํ๊ฒ ๋๋ค.
.box_wrap {
width: 400px;
/*์์ ๋ฅผ ์ํด 400px์ด๋ผ๋ ๊ฐ๋ก๊ฐ ๋ถ์ฌ*/
margin: 0 auto;
}
.box_parent {
float:left;
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
background-color: pink;
}
๋ถ๋ชจ์์์ float:left;๋ฅผ ์ฃผ๊ฒ ๋๋ฉด ๋ธ๋ก ์์๋ก์จ ๋ถ๋ชจ๊ฐ 400px๋ฅผ ํจ๊ผ ๊ฐ์ง๊ณ ์์๋๋ฐ ๋ถ๋ชจ ์์๊ฐ floating๋๋ฉด์ ์ค์ค๋ก์ ์ฌ์ด์ฆ๋ฅผ ์๋ ด๋๋ ์์์์์ ๊ฐ๋ก ์ฌ์ด์ฆ ๋งํผ์ผ๋ก ์ค์ด๋ค์๋ค.
์ด๋ ๋ถ๋ชจ ์์์ธ box_parent๋ floating๋๋ฉด์ ๋ถ๋ชจ์์์ ๋ถ๋ชจ ์์์ธ box_wrap์๋ ํด์ ๊ฐ ํ์ํ ์ํฉ์ด ๋จ.
๊ฒฐ๋ก
์ด ๋ฐฉ๋ฒ์ ์ด๋ฏธ floating๋์ด์๋ ๋ถ๋ชจ ์์๊ฐ ์์ ์์๋ค์ด floating์ด ๋๋ค๊ณ ํ์๋ ๊ตณ์ด ๋ฐ๋ก ํด์ ๋ฐฉ๋ฒ์ ๋ณด์ ํ ํ์๊ฐ ์๋ค๋ ์ ๋๋ก๋ง ์ธ์ํ๊ณ ๋งํฌ์
์ ํด์ผํ๋ค.
์์ ์์์ floating์ ํด์ ํ๊ธฐ ์ํด์ ๊ทธ ๋ถ๋ชจ์์์๊ฒ float ์์๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์ผ๋ก ํด์ ๋ฅผ ํ๋๊ฒ์ ๋ณ๋ก ์ข์ง ๋ชปํ ๋ฐฉ๋ฒ
- overflow(visible ์ ์ธ)๋ฅผ ์ด์ฉํ ํด์
๋ถ๋ชจ ์์์ visible ์์ฑ๊ฐ์ ์ ์ธํ overflow์์ฑ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ
์ฌ๋ฌ๊ฐ์ง ํด์ ๋ฐฉ๋ฒ์ค ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
overflow: hidden; /* ๋ถ๋ชจ์์์๊ฒ overflow (visible ์ ์ธ) ๋ถ์ฌ */
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
.pop{
position:absolute;
right:-50px;
top:150px;
width:100px;
height:100px;
background-color:#ddd;
}
๋ฐ๋ก ๋์ด๊ฐ์ ์๋ ดํ๋ ํํ๋ก ๋ณํจ.
์์์ ๋์ด๊ฐ์ ๋ณ๊ฒฝํด๋ ์์์ ๋์ด๊ฐ์ ๊ทธ๋๋ก ์๋ ดํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ๋ ๋์ด๊ฐ ๋ง์ถฐ์ ธ์ ๋์ด๋๋ค.
๋จ์
๋ง์ฝ ๋ถ๋ชจ ์์์์ ํ์
๊ณผ ๊ฐ์ ์ฝํ
์ธ ๊ฐ ์๋ค๊ณ ๊ฐ์
<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
<div class="pop">popup</div>
<!--ํ์
์ด๋ผ๋ ํด๋์ค ์์ฑ-->
</div>
</div>
ํ์
์ด ๋ถ๋ชจ ์์์ ํฌํจ๋ ๋ถ๋ถ๋ง ๋ณด์ด๊ณ ๋๋จธ์ง ๋ถ๋ถ์ overflow:hidden๋๋ฌธ์ ๋ณด์ด์ง ์๋๋ค.
๊ทธ๋์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ float์ ํด์ ํ ๋๋ ์์ ๋ด์ฉ์ค ๋ถ๋ชจ์ ๋ด์ฉ์ ๋์ณ๋์ ๋
ธ์ถ๋๋ ์ปจํ
์ธ ๋ ์๋์ง ํ์ธ ๋ฐ ํ์
์ด ๋์์๋ ์ฌ์ฉํด์ผํจ.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ํ์คํ ํด์ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ๋์ฌ ๊ฐ์ ์์๋ฅผ ์ด์ฉํ ํด์ ๋ฐฉ๋ฒ๊ณผ ๋๋ถ์ด์ ์์ ์ด์ ์ํฉ๋ง ์ ํํ๊ฒ ํผํ ์ ์๋ค๋ฉด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํด์ ๋ฐฉ๋ฒ์ค ํ๋์ด๋ค.
- ์ธ์ ํ์ ์์์ clear ์์ฑ์ ์ด์ฉํ ํด์
clear์์ฑ์ float์ ํ๋ฆ์ ๋๊ธฐ ์ํ float ํด์ ์ ์ฉ ์์ฑ.
left, right, both, none์ด๋ผ๋ ์์ฑ๊ฐ ๊ฐ์ง
๋งํฌ์
์์
: box1 -> box2 -> ๋น span ์์ญ
box1๊ณผ box2๋ ์ข์ฐ๋ก floating์ด ๋์ด์๋ ์ํ
๊ทธ์ ์ธ์ ํด์๋ ํ์ ์์์ธ ๋น span์ clear:both๋ผ๋ ์์ฑ์ผ๋ก box ๋๊ฐ์ ๋ค๋ก ๋์ฌ ํ์ ๊ฐ float์ ์์ญ์์ ๋ฒ์ด๋๋๊ฒ์ ์ ์ ์๋ค.
<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
<div class="clear"></div>
<!-- ์๋ฏธ๊ฐ ์๋ ๋นํ๊ทธ-->
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
.clear {
clear: both;
}
box์ ๋์ด๊ฐ์ ๋ณ๊ฒฝํด๋ ๋์ด๊ฐ์ด ์๋ ด์ด ๋๋ ํด์ ์ํ.
clear๋ ๋ธ๋ก ์์๋ก ๋์ด์์ด์ผ๋ง ๋ถ๋ชจ ์์์ ์ฌ์ด์ฆ๋ฅผ ์์๋ฐ์์ ํด์ ๊ฐ ๋๋ค.
span๊ณผ ๊ฐ์ ์ธ๋ผ์ธ ์์๋ก ๋ฐ๊พผ๋ค๋ฉด ์ ๋๋ก ํด์ ๊ฐ ๋์ง ์์.
๋ฐ๋ผ์ display:block์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.
clear๋ผ๋ float์ ํด์ ์ํค๋ ์ ์ฉ ์์ฑ์ ์ด์ฉํด์ ๊ฐ์ฅ ๊น๋ํ๊ฒ float์ ํด์ ํ ์ ์๋ค.
ํ์ง๋ง ์ด๋ฅผ ์ํด์๋ ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ๋ค์ด์์ง ์์ ๋น ํ๊ทธ๋ฅผ ์ด์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๊ทธ๋ณ๋ก ์๋ฏธ๋ฅผ ๊ฐ๋ ์๋งจํฑ์ ์ธ ๋งํฌ์
์์๋ ๋ถํ์ํ ์์๊ฐ ์๊ธฐ๋๊ฒ์ด๋ฏ๋ก ๋ฒ์กํ๋ค๋ ๋จ์ ์ด ์๋ค.
๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ 5๋ฒ์ด ๋ฑ์ฅ
- ๊ฐ์์์๋ฅผ ์ด์ฉํ clear์์ฑ์ ์ด์ฉํ ํด์
๋น ํ๊ทธ๊ฐ ์ค๋ ๊ณณ์ after๋ผ๋ ๊ฐ์์์๊ฐ ์๋ฆฌ์ก๊ณ ์์.
๋๊ฐ์ด clear:both๋ผ๋ ์์ฑ์ ์ค์ ํด์ ๊ฐ ๋๋ค.
<div class="box_wrap">
<div class="box_parent">
<div class="box box1">box1</div>
<div class="box box2">box2</div>
</div>
</div>
.box_wrap {
width: 400px;
margin: 0 auto;
}
.box_parent {
border: 3px dotted blue;
padding: 10px;
}
.box {
width: 100px;
height: 100px;
color: #fff;
text-align: center;
}
.box1 {
float: left;
background-color: green;
}
.box2 {
float: right;
height: 100px;
background-color: pink;
}
.box_parent:after { /* :after๋ฅผ ์ด์ฉํ์ฌ ์ธ์ ์์๋ก ๊ตฌ์ฑํ์ฌ ํด์ */
display: block;
/*๋ธ๋ก ์์๊ฐ ํ์ํ๋ฏ๋ก after๋ฅผ ๋ธ๋ก ์์๋ก ๋ฐ๊ฟ์ค*/
clear: both;
content: '';
}
๊ฐ์์์์ด๊ธฐ ๋๋ฌธ์ content๋ผ๋ ํ์ ์์ฑ์ด ๋ค์ด๊ฐ์ผ ๋๋ฏ๋ก content์ ๊ฐ์ ๋น๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๊ฒ๋จ.
๋ฐ๋ผ์ ๋น ํ๊ทธ๋ก clear ์์ฑ์ ์ค๊ฒ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ์ฃผ๋ฉด์ ์๋ฉํฑ ๋งํฌ์
์์์ ๋ฐํ์ง ์๋ ํด์ ๋ฐฉ๋ฒ์ด ์์ฑ๋จ.
์ด ํด์ ๋ฐฉ๋ฒ์ overflow:hidden์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ด ํ์ ๊ณผ ๊ฐ์ ์ฝํ ์ธ ๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ์๋ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ์ฝํ ์ธ ์ ๋์ด๊ฐ์ด๋ ์ฌ์ด์ฆ์ ๋ณํ์๋ ์ ์ฐํ๊ฒ ๋์๋๋ค.
๊ฒฐ๋ก
ํด์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋
๊ฐ ํด์ ๋ฐฉ๋ฒ์ ์ํฉ๋ณ๋ก ํน์ง์ ์ ์๊ณ ์ฌ์ฉํด์ผ ํ๋ค.
overflow๋ after๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ ๋ต์ ์๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์ฌ๋ฌ ์ํฉ์ ์ ํํ๊ฒ ํ์
ํ๊ณ ์๋ค๋ฉด
์์ ์์๋ค์ ํด์ ๊ฐ ๊ตณ์ด ํ์์๋ ๋ถ๋ชจ๊ฐ float๋ฅผ ๊ฐ์ง ๋ฐฉ๋ฒ,
๋์ด๊ฐ์ด ๋๋ค ๊ณ ์ ์ธ ๋ฐฉ๋ฒ์์ ๋ค์ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
float์ด ์ UI์ ์ค๋ฅ์ ๊ฐ์ ํ์์ ๋ฐ์ํ๊ฒ ํ๋์ง์ ๋ํด์๋ overflow์ float์ด ๋์ํ๋ ๊ฐ๋ ์ธ BFC(Block Formatting Context)๊ฐ๋ ์ ์์์ผํจ
์ด ์ด๋ก ์ ๋ฐ๋ก ๊ณต๋ถํด์ผํ ์ ๋๋ก ์ฌ๋์๊ณ ์ดํด๋๊ฐ ํ์ํ ๊ฐ๋
์ด๊ธฐ ๋๋ฌธ์
Block formatting context
Block formatting context
์ฐธ๊ณ ํ๊ธฐ