-
๐จ CSS 3 | CSS ๋จ์ ( %, em, rem, vw, vh )CSS 2021. 12. 17. 17:43
%์ px ๋น๊ต
px์ parent์ ์๊ด์์ด ํญ์ ๊ฐ์ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค.
%๋ parent์ ๋์ด๋ฅผ ๊ธฐ์ค(padding ๊ฐ ์ ์ธ)์ผ๋ก ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ parent์ ํฌ๊ธฐ์ ์ํฅ์ ๋ฐ๋๋ค(relative).
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css ๋จ์</title> <style> .fifty-percent { width: 50%; border: 2px solid black; background-color: aqua; } .one-hundred-pixels { width: 100px; border: 2px solid black; background-color: aqua; } .parent { width: 135px; border: 2px solid black; } </style> </head> <body> <div class="box fifty-percent">50%</div> <div class="box one-hundred-pixels">100px</div> <hr /> <div class="parent"> <div class="box fifty-percent">50%</div> <div class="box one-hundred-pixels">100px</div> </div> </body> </html>
์ ์ ๊ธฐ์ค์ผ๋ก ์์ชฝ์ %๋ ๊ธฐ์ค์ด html ์ ์ฒด ํฌ๊ธฐ๊ฐ ๋๊ณ , ์๋์ %๋ parent ํ๊ทธ์ ํฌ๊ธฐ๊ฐ ๊ธฐ์ค์ด ๋๋ค.
em์ rem ๋น๊ต
em์ ์์ ์์(๊ฐ์ฅ ๊ฐ๊น์ด parent) ํฐํธ ์ฌ์ด์ฆ์ ๋ช ๋ฐฐ์ธ๊ฐ๋ฅผ ๋ํ๋ธ๋ค. ๋ง์ฝ ์์ ์์์ ํฐํธ ์ฌ์ด์ฆ๊ฐ 20px ์ด๋ผ๋ฉด, 1em = 20px ์ด ๋๊ณ 20em = (20 * 20) px ์ด ๋๋ค.
rem์ ์ต์์(root) ํฐํธ์ฌ์ด์ฆ๊ฐ ๊ธฐ์ค์ด๋ค.
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css ๋จ์</title> <style> html { font-size: 17px; } .one-em { font-size: 1em; } .one-rem { font-size: 1rem; } .two-em { font-size: 2em; } .two-rem { font-size: 2rem; } .parent { font-size: 30px; } </style> </head> <body> <div class="one-rem">1rem</div> <div class="one-em">1em</div> <div class="two-rem">2rem</div> <div class="two-em">2em</div> <hr /> <div class="parent"> <div class="one-rem">1rem</div> <div class="one-em">1em</div> <div class="two-rem">2rem</div> <div class="two-em">2em</div> </div> </body> </html>
<hr> ์ ์ ๊ธฐ์ค์ผ๋ก ์์ชฝ์ ๋จผ์ ๋ณด๋ฉด,
- 1rem = 17px : ์ต์์ ํ๊ทธ <html>, ์ต์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
- 1em = 17px : ์์ ํ๊ทธ <html>, ์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
- 2rem = (17 * 2)px : ์ต์์ ํ๊ทธ <html>, ์ต์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
- 2em = (17 * 2)px : ์์ ํ๊ทธ <html>, ์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
์๋์ชฝ์ ๋ณด๋ฉด
- 1rem = 17px : ์ต์์ ํ๊ทธ <html>, ์ต์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
- 1em = 30px : ์์ ํ๊ทธ <parent>, ์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 30px
- 2rem = (17 * 2)px : ์ต์์ ํ๊ทธ <html>, ์ต์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 17px
- 2em = (30 * 2)px : ์์ ํ๊ทธ <parent>, ์์ ํ๊ทธ์ ํฐํธ ์ฌ์ด์ฆ 30px
em๊ณผ rem ๋ชจ๋ ์๋์ ์ธ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์น์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค. em, rem์ ์ฌ์ฉํด์ padding, ํฐํธ ํฌ๊ธฐ ๋ฑ์ ์ฃผ๋ฉด ์์ ํ๊ทธ์ ํฌ๊ธฐ์ ๋ง๊ฒ ์์์ ์กฐ์ ๋๋ค.
vw์ vh๋น๊ต
v๋ viewport์ ์ฝ์์ด๋ค. vw(viewport-width)์ vh(viewport-height)๋ชจ๋ viewport๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค.
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css ๋จ์</title> <style> .fifty-vw { width: 50vw; border: 2px solid black; background-color: blue; } .fifty-percent { width: 50%; border: 2px solid black; background-color: blue; } .twenty-five-vh { height: 25vh; border: 2px solid black; background-color: blue; } .parent { width: 100px; border: 2px solid black; } </style> </head> <body> <div class="box fifty-percent">50%</div> <div class="box fifty-vw">50vw</div> <div class="box twenty-five-vh">25vh</div> <hr /> <div class="parent"> <div class="box fifty-percent">50%</div> <div class="box fifty-vw">50vw</div> <div class="box twenty-five-vh">25vh</div> </div> </body> </html>
%๋ padding ๊ฐ์ ์ ์ธํ ๋์ด๊ฐ ๊ธฐ์ค์ด์ง๋ง, vw, vh๋ padding ๊ฐ์ ํฌํจํ ๋์ด๊ฐ ๊ธฐ์ค์ด๋ค. viewport๊ฐ ๊ธฐ์ค์ด๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ ์์ผ๋ก ๋๋ฆฌ๋ฉด vw์ ๊ฐ์ด ๋์ด๋๊ณ , ํ๋ฉด์ ์๋๋ก ๋๋ฆฌ๋ฉด vh์ ๊ฐ์ด ๋์ด๋๋ค(relative).
[์ฐธ๊ณ ์๋ฃ]
'CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐จ CSS 6 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.09 ๐จ CSS 5 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ (0) 2022.09.09 ๐จ CSS 4 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.05 ๐จ CSS 2 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ (0) 2021.12.17 ๐จ CSS 1 | CSS layout (display, position) (0) 2021.12.16