๐Ÿ‘ฉ‍๐Ÿ’ป/CSS3

[responsive-web] px, em, rem๋‹จ์œ„๋ฅผ ์ ์žฌ์ ์†Œ์— ์“ฐ๊ธฐ

ํ•œ๋‚˜ 2021. 1. 6. 23:14

๊ฐ ๋‹จ์œ„๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ณ  px๋งŒ ์ฃผ๊ตฌ์žฅ์ฐฝ ์“ฐ๋‹ค๊ฐ€, ์ƒ๊ฐ๋‚œ ๊น€์— ์ •๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ์–ด์„œ, ์ด๋Ÿฐ ์ €๋Ÿฐ ๊ฐ•์˜๋“ค ๋ชจ์•„ ๋ณด๊ณ , ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ฒจ๋ดค๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, px์€ ๊ณ ์ •๋œ ๊ฐ’, ๋น„์œจ์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•˜๋‹ˆ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

em์€ ํ…์ŠคํŠธ์™€ ๊ด€๋ จ์ด ๋†’์€๋ฐ, ์–ด๋–ค ๋””์ž์ธ์ด ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์„ ๊ฒฝ์šฐ '๊ทธ ๋น„์œจ์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ์„ ๋•Œ ์œ ์šฉ'ํ•œ ๋‹จ์œ„.

rem์€ em์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋‹จ์œ„๋กœ, root์ธ <html>์˜ ๊ธฐ๋ณธ font-size๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.

 


em(์— )์˜ ์–ด์›

- ๊ณผ๊ฑฐ ๊ธˆ์† ํ™œ์ž๋ฅผ ์ฐ๋˜ ์‹œ์ ˆ, ํฐํŠธ๋“ค์˜ ๊ธฐ์ค€์ ์ด ๋  ํ•˜๋‚˜์˜ ํฐํŠธ ๊ทœ๊ฒฉ์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž M์ด ๋งก์•˜๋‹ค. M์ด ๊ฐ€์žฅ ํญ์ด ๋„“๊ณ , ๋„ค๋ชจ ํ˜•ํƒœ๋ฅผ ๋„์—ˆ์œผ๋ฏ€๋กœ, M์„ ๋‹ด์„ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค๋ฅธ ์•ŒํŒŒ๋ฒณ๋“ค์„ ๋ชจ๋‘ ๋‹ด์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด ์ •์‚ฌ๊ฐํ˜• ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๊ฐ€ em์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ์ด์–ด์กŒ๊ณ , ํ˜„๋Œ€์—์„œ๋„ em(์— )์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

- ์†Œ๋ฌธ์ž์˜ ๋ฐœ๋ช…, ๋‹ค์–‘ํ•œ ํฐํŠธ์˜ ๊ฐœ๋ฐœ๋กœ ํ˜„๋Œ€์— ํฐํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ๋‚˜, CSS๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” M์ด ์˜ˆ์ „๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋„ค๋ชจ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฝ‰ ์ฑ„์šฐ์ง€๋Š” ์•Š๋Š”๋‹ค.

 

<div class="em2">M</div>

.em2 {
    background-color: #fff;
    text-align: center;
    line-height: 1;
    width: 1em;
    height: 1em;
}

 

์†Œ๋ฌธ์ž a๋ฅผ ๋‹ด์€ em square

- ์œ„์ฒ˜๋Ÿผ, ๋„ค๋ชจ ์‚ฌ๊ฐํ˜• ์•ˆ์— ์—ฌ๋ฐฑ์„ ๊ฐ€์ง„ 1em ์Šคํ€˜์–ด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

- px๊ณผ em ์ค‘ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๋‹จ์œ„๋ฅผ ์“ธ์ง€ ๊ณ ๋ฏผ์ด ๋  ๋•Œ๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ํฐํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ง€๋ฉด ์กฐ๊ธˆ ํŽธํ•˜๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” px, em์„ ๊ฐ๊ฐ ์ ์šฉํ–ˆ์„ ๋•Œ์˜ ๋ชจ์Šต.

 

 

px์„ ์ด์šฉํ–ˆ์„ ๋•Œ

 

em์„ ์ด์šฉํ–ˆ์„ ๋•Œ

.em {
    background-color: #fff;
    text-align: center;
    border-left: 1em solid orangered;
    /* border-left: 1px solid orange; */
}

- em, px์€ ๊ทธ๋ž˜์„œ ๋””์ž์ธ์˜ ์˜๋„์— ๋”ฐ๋ผ ๋„์–ด์“ฐ๊ธฐ(๊ณต๋ฐฑ), width, height, padding, margin ๋“ฑ์—์„œ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์—ฌ๊ธฐ์„œ, em์„ ์ด์šฉํ–ˆ์„ ๋•Œ ์˜ˆ์‹œ์˜ ์™ผ์ชฝ border๋Š” ์ •์‚ฌ๊ฐํ˜•์„ ์ทจํ•˜๊ณ  ์žˆ์ง€ ์•Š์œผ๋‹ˆ, ์•„๋ž˜์˜ ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ, line-height๋ฅผ 1๋กœ ๋งž์ถฐ์ค€๋‹ค.

 

line-height: 1; ์ ์šฉ ์‹œ

.em {
    background-color: #fff;
    text-align: center;
    border-left: 1em solid orangered;
    line-height: 1;
}

 

em ๋‹จ์œ„๋ฅผ ์ด์šฉํ•œ ์˜ˆ์ œ (ํ…์ŠคํŠธ์—์„œ์˜ ๋น„์œจ, letter-spacinig)

ํ…์ŠคํŠธ์—์„œ์˜ ๋น„์œจ

๊ธฐ๋ณธ <h2> ํƒœ๊ทธ๋ฅผ inspect ํ•ด๋ณด๋ฉด, ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ user agent stylesheet ์„น์…˜์—์„œ font-size๋Š” 1.5em์ด๋ผ๊ณ  ๋‚˜์˜จ๋‹ค. html ๋ฃจํŠธ ํƒœ๊ทธ๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ ํฐํŠธ ์‚ฌ์ด์ฆˆ์˜ 1.5๋ฐฐ๋ฅผ ํ•œ ๋น„์œจ์ด๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

 

font-size์— em์„ ์”€.

 

์„ค์ • > ๋ชจ์–‘ > ๊ธ€๊ผด ํฌ๊ธฐ '์ค‘๊ฐ„'์œผ๋กœ ์ฒดํฌ ๋˜์–ด ์žˆ๋‹ค๋ฉด, 16px๋กœ ์ง€์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

computed ํƒญ์—์„œ ์ตœ์ข…์ ์œผ๋กœ ๊ณ„์‚ฐ๋˜๋Š” font-size๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

default

.box {
    width: 500px;
    background-color: #fff;
    /* font-size: 40px; */
}
.box h2 {
    /* h2๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ font-size ๋ถ€์—ฌํ•จ. */
    color: orangered;
    padding: 20px;
}

.box p {
    padding: 0 20px 20px;
}

.box img {
    width: 100%;
}

 

 

 

 

 

 

 

 

.box {
    width: 500px;
    background-color: #fff;
    font-size: 40px; /* font-size๋ฅผ box์— ๋ถ€์—ฌํ•จ. */
}
.box h2 {
    /* .box๋กœ๋ถ€ํ„ฐ ์ƒ์†๋˜๋Š” font-size์— ๋งž์ถฐ, 
    h2์˜ font-size๋Š” 1.5em์ธ ๊ฐ’์— ๋”ฐ๋ผ computed๋˜๊ณ ,
    1.5๋ฐฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. */
    color: orangered;
    padding: 20px;
}

.box p {
	/* p ํƒœ๊ทธ ์—ญ์‹œ .box๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ font-size์— ๋งž์ถฐ,
    ๋น„๋ก€ํ•ด ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, padding ๊ฐ’์€ pixel๋กœ
    ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€์™€ padding์€ ๊ฐ™์Œ. */
    padding: 0 20px 20px;
}

.box img {
    width: 100%;
}

 

 

 

 

 

 

 

 

 

- ๊ฐ€๊ฒฉ ํ‘œ์‹œ, ๋ถ€์—ฐ ์„ค๋ช… ๋“ฑ ๊ฐ™์€ <h2> ํƒœ๊ทธ ์•ˆ์—์„œ๋„ ๋น„์œจ์ด ๋‹ฌ๋ผ์•ผ ํ•˜๋Š” sub-text ๋“ฑ์„ ์ž‘์„ฑํ•ด์•ผ ํ•  ๋•Œ ์—ญ์‹œ em ๋‹จ์œ„๋ฅผ ์“ฐ๋ฉด ์œ ์ง€ ๋ณด์ˆ˜์— ์‰ฝ๋‹ค.

- <h2>๋กœ๋ถ€ํ„ฐ ์ƒ์†๋˜๋Š” font-size์— 0.5๋ฐฐ๋ฅผ ํ•œ ๋น„์œจ๋กœ computed๋˜์–ด ์ ์šฉ์ด ๋˜๋ฏ€๋กœ, <h2> ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ๋น„์œจ์ด ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค.

 

.box h2 span {
    font-size: 0.5em;
    color: lightgray;
}

 

 

 

 

 

 

- .box์— font-size๋ฅผ 40px๋กœ ๋Š˜๋ ธ์„ ๋•Œ <h2> ํƒœ๊ทธ์™€ ํ•˜์œ„์˜ <span> ํƒœ๊ทธ ๋น„์œจ์ด ๊นจ์ง€์ง€ ์•Š๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

.box {
    width: 500px;
    background-color: #fff;
    font-size: 40px;
}
.box h2 span {
    font-size: 0.5em;
    color: lightgray;
    
    /* ์œ„์ฒจ์ž */
    vertical-align: super; 
}

letter-spacinig

- ์ž๊ฐ„์ด๋ผ๋Š” ๊ฐœ๋… ์—ญ์‹œ ๋น„์œจ์„ ๋”ฐ๋ผ๊ฐ„๋‹ค. em์ด๋ผ๋Š” ๋‹จ์œ„๊ฐ€ ์–ด์šธ๋ฆฐ๋‹ค.

.box h2 span {
    font-size: 0.5em;
    color: lightgray;
    letter-spacing: 0.2em;
}

 

 

 

 

 

ETC

 

์ด๋Ÿฐ ์‹์œผ๋กœ ํ…์ŠคํŠธ ์•ž์˜ ๊พธ๋ฐˆ ์—ญ์‹œ ํ…์ŠคํŠธ์— ๊ธฐ๋ฐ˜ํ•œ ๋น„์œจ๋กœ ์ค„์—ฌ์ง€๊ณ  ๋Š˜์—ฌ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

.box h2:before {
    content: '';
    display: inline-block;
    background-color: brown;
    width: 0.5em;
    height: 0.5em;
    border-radius: 50%;
    margin-right: 0.5em;
}

 

Component ๋“ฑ์„ ๋งŒ๋“ค ๋•Œ

 

- button-wrapper <div>๊ฐ€ .button์ด๋ผ๋Š” <a> ํƒœ๊ทธ๋ฅผ ๊ฐ์‹ผ ํ˜•ํƒœ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ,font-size๋งŒ ๋ณ€๊ฒฝํ•ด ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•  ๋•Œ๋„ em์ด ์“ฐ์ธ๋‹ค.

.button-wrapper {
    border-top: 2px solid #ddd;
    padding: 20px;
}
.button {
    background-color: #369;
    color: white;
    padding: 0.5em 1em;
    /* a ํƒœ๊ทธ๋Š” inline ํƒœ๊ทธ์ด๋ฏ€๋กœ, ์ƒํ•˜ ํŒจ๋”ฉ์ด ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€ ๋ชปํ•œ๋‹ค. */
    display: inline;
    text-decoration: none;
}
.button.small {
    font-size: 12px;
}
.button.large {
    font-size: 20px;
}

 

 


rem ๋‹จ์œ„์˜ ํ•„์š”์„ฑ

em ์†์„ฑ์„ ์ด์šฉํ•ด css๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€, ๋งค์šฐ ๊นŠ์€ ๋‹จ๊ณ„์— ์ด๋ฅธ๋‹ค๋ฉด, ์ชผ๊ฐœ์งˆ ๋Œ€๋กœ ์ชผ๊ฐœ์ง„ ๋น„์œจ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•ด์ฃผ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒƒ์ด๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•˜๋ฉด์„œ๋„ ์žŠ์„ ์ˆ˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ 'root'์—์„œ ๋”ฐ์˜จ 'rem' ๋‹จ์œ„๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•จ์ด๋‹ค.

root = <html>

์ฆ‰, 16px์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋Š” <html>์„ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š”๋‹ค๋Š” ์˜๋ฏธ.

 

 

์ฐธ๊ณ 

www.youtube.com/watch?v=AfxL9OKBBCU

www.youtube.com/watch?v=S5uMXoGogkk

www.youtube.com/watch?v=47xHPFQ1Ll4