๋ฐ์ํ
1๏ธโฃ Transform : translate()
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ ๋ถ๋ชจ ์์์ position : relative ์์ฑ์ ์ฃผ๊ณ ๊ธฐ์ค์ ์์ฑ.
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ position : absolute ์์ฑ์ ์ฃผ๊ณ left, top 50%, 50%์ฉ ์ด๋์์ผ ์ค์์ผ๋ก ์ด๋.
- position์ ํตํด ์ด๋์ํฌ ๋ ์์์ width, height ๊ฐ์ ํฌํจํด์ ์ด๋ํ๊ธฐ ๋๋ฌธ์ transform: translate(-50%, -50%);
๊ฐ์ ์ถ๊ฐํ๋ฉด ์์์ width, height ๊ฐ์ -50% ๋งํผ ๋ค์ ๋๋๋ ค์ ๋ฐฐ์น๋์ด ์ํ์ข์ฐ ์ค์ ์ ๋ ฌ ์์ฑ! - ์์ ํฌ๊ธฐ์ ๋ํ transform ๊ฐ์ ํผ์ผํฐ์ง๋ก ์ฃผ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์์ ์ฉ์ดํด์ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
<div class="parent">
<div class="children translate">
<!-- Contents -->
</div>
</div>
.parent {
/* ๋ถ๋ชจ ์์์ relative๋ฅผ ์ฃผ๊ณ ๊ธฐ์ค ์์ฑ */
position: relative;
}
.children {
/* ์์ ์์์ absolute๋ฅผ ์ฃผ๊ณ ์ํ 50%์ฉ ๋ฐฐ์น */
position: absolute;
top: 50%;
left: 50%;
}
/* ๐ก Solution 01 | Transform : translate() */
.translate {
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
}
2๏ธโฃ Negative Margin
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ ๋ถ๋ชจ ์์์ position : relative ์์ฑ์ ์ฃผ๊ณ ๊ธฐ์ค์ ์์ฑ.
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ position : absolute ์์ฑ์ ์ฃผ๊ณ left, top 50%, 50%์ฉ ์ด๋์์ผ ์ค์์ผ๋ก ์ด๋.
- position์ ํตํด ์ด๋์ํฌ ๋ ์์์ width, height ๊ฐ์ ํฌํจํด์ ์ด๋ํ๊ธฐ ๋๋ฌธ์ ์์๋ก margin ๊ฐ์ ์ถ๊ฐํ๋ฉด ์์์ width, height ๊ฐ์ -50% ๋งํผ ๋ค์ ๋๋๋ ค์ ๋ฐฐ์น๋์ด ์ํ์ข์ฐ ์ค์ ์ ๋ ฌ ์์ฑ!
- ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด์ง๋ง ๊ฐ์ ๊ณ ์ ์ผ๋ก ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์์ ์ฃผ์.
<div class="parent">
<div class="children negativeMargin">
<!-- Contents -->
</div>
</div>
.parent {
/* ๋ถ๋ชจ ์์์ relative๋ฅผ ์ฃผ๊ณ ๊ธฐ์ค ์์ฑ */
position: relative;
}
.children {
/* ์์ ์์์ absolute๋ฅผ ์ฃผ๊ณ ์ํ 50%์ฉ ๋ฐฐ์น */
position: absolute;
top: 50%;
left: 50%;
width: 400px;
height: 200px;
}
/* ๐ก Solution 02 | negative Margin = width์ 2/1 px */
.negativeMargin {
/* ์์์ 2/1 ํฌ๊ธฐ๋งํผ ์์๊ฐ ์ง์ */
margin-left: -200px;
margin-top: -100px;
}
3๏ธโฃ inset ์์ฑ๊ณผ Margin auto
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ ๋ถ๋ชจ ์์์ position : relative ์์ฑ์ ์ฃผ๊ณ ๊ธฐ์ค์ ์์ฑ.
- ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ณ ์ถ์ ์์์ position : absolute ์์ฑ์ ์ฃผ๊ณ left, right, top, bottom ๊ฐ๊ฐ 0์ฉ ๊ฐ์ ์ฃผ๋ฉด ์ข, ์ฐ๋ก ๋์ด๋์ ๊ฝ ์ฐจ๋ ํํ๊ฐ ๋๋ค. ์ด๋ margin:auto ๋ฅผ ์ฃผ๋ฉด ์ํ์ ์ข์ฐ์ ๋์ผํ ๋น์จ์ margin ๊ฐ์ด ๋ถ์ฌ๋๋ฏ๋ก ์ํ์ข์ฐ ์ค์ ์ ๋ ฌ ์์ฑ!
- left: 0; right: 0; top: 0; bottom:0; ๊ฐ ์ inset : 0 ์ด๋ผ๋ ๋จ์ถ ์์ฑ์ผ๋ก ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
- inset์ด๋ผ๋ ์๋ก์ด ์์ฑ์ผ๋ก ๊ณ ์ ๊ฐ ์์ด ๊ตฌํํ ์ ์์ด์ Ngative Margin ๋ณด๋ค ์ ์ง๋ณด์์ ์ฉ์ดํ ๋ฐฉ๋ฒ!
<div class="parent">
<div class="children inset">
<!-- Contents -->
</div>
</div>
.parent {
/* ๋ถ๋ชจ ์์์ relative๋ฅผ ์ฃผ๊ณ ๊ธฐ์ค ์์ฑ */
position: relative;
}
.children {
/* ์์ ์์์ absolute */
position: absolute;
}
/* ๐ก Solution 03 | inset + Margin auto */
.inset {
/* inset = left:0, right:0; top:0; right:0 ์ ๋จ์ถ์์ฑ*/
inset: 0;
/* ์ปจํ
์ธ ๋ฅผ ๋ค์ฐ๋ ์ํ๊ฐ ๋์ ๋จ๋ ๊ณต๊ฐ์ margin:auto ์ฌ์ฉ ๊ฐ๋ฅ */
margin: auto;
}
๋ฐ์ํ