CSS ๋ ผ๋ฆฌ์ ์์ฑ์ ํ์ฉํ์ฌ ๋ฐ์ํ, ๊ตญ์ ํ๋ ์น ๋์์ธ์ ์ ์ฌ๋ ฅ์ ์ด์ด๋ณด์ธ์. ๋ค์ํ ์ฐ๊ธฐ ๋ชจ๋์ ์ธ์ด์ ๋งค๋๋ฝ๊ฒ ์ ์ํ๋ ๋ ์ด์์ ์ ์๋ฒ์ ๋ฐฐ์๋ณด์ธ์.
๊ธ๋ก๋ฒ ๋ ์ด์์ ์ ์: CSS ๋ ผ๋ฆฌ์ ์์ฑ ์ฌ์ธต ํ๊ตฌ
์ค๋๋ ๊ณผ ๊ฐ์ด ์ํธ ์ฐ๊ฒฐ๋ ์ธ์์์ ์น์ฌ์ดํธ๋ ๋ค์ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์์ผ์ผ ํฉ๋๋ค. ์ด๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ(LTR)์์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RTL), ์ฌ์ง์ด ์ธ๋ก ์ฐ๊ธฐ๊น์ง ๋ค์ํ ์ธ์ด์ ์ฐ๊ธฐ ๋ชจ๋๋ฅผ ์ง์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. left, right, top, bottom๊ณผ ๊ฐ์ ์ ํต์ ์ธ CSS ์์ฑ์ ๋ณธ์ง์ ์ผ๋ก ๋ฐฉํฅ์ ์์กด์ ์ด์ด์, ๋ค๋ฅธ ์ฐ๊ธฐ ๋ชจ๋์ ๋งค๋๋ฝ๊ฒ ์ ์ํ๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ CSS ๋
ผ๋ฆฌ์ ์์ฑ์ด ํด๊ฒฐ์ฑ
์ผ๋ก ๋ฑ์ฅํฉ๋๋ค.
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ด๋?
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ ๋ฌผ๋ฆฌ์ ๋ฐฉํฅ์ด ์๋ ์ฝํ ์ธ ์ ํ๋ฆ์ ๊ธฐ๋ฐํ์ฌ ๋ ์ด์์ ๋ฐฉํฅ์ ์ ์ํ๋ CSS ์์ฑ ์งํฉ์ ๋๋ค. ์ด๋ ํ๋ฉด์ ๋ฌผ๋ฆฌ์ ๋ฐฉํฅ์ ์ถ์ํํ์ฌ, ์ฐ๊ธฐ ๋ชจ๋๋ ๋ฐฉํฅ์ ๊ด๊ณ์์ด ์ผ๊ด๋๊ฒ ์ ์ฉ๋๋ ๋ ์ด์์ ๊ท์น์ ์ ์ํ ์ ์๊ฒ ํด์ค๋๋ค.
left์ right ๋์ start์ end์ ๊ด์ ์์ ์๊ฐํ๊ฒ ๋ฉ๋๋ค. top๊ณผ bottom ๋์ block-start์ block-end์ ๊ด์ ์์ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์์ ์ฐ๊ธฐ ๋ชจ๋์ ๋ฐ๋ผ ์ด๋ฌํ ๋
ผ๋ฆฌ์ ๋ฐฉํฅ์ ์ ์ ํ ๋ฌผ๋ฆฌ์ ๋ฐฉํฅ์ผ๋ก ์๋ ๋งคํํฉ๋๋ค.
ํต์ฌ ๊ฐ๋ : ์ฐ๊ธฐ ๋ชจ๋์ ํ ์คํธ ๋ฐฉํฅ
ํน์ ์์ฑ์ ์์ธํ ์์๋ณด๊ธฐ ์ ์ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
์ฐ๊ธฐ ๋ชจ๋
์ฐ๊ธฐ ๋ชจ๋๋ ํ ์คํธ ์ค์ด ๋ฐฐ์น๋๋ ๋ฐฉํฅ์ ์ ์ํฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ์ฐ๊ธฐ ๋ชจ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
horizontal-tb: ์ํ ์๋จ์์ ํ๋จ์ผ๋ก (์์ด, ์คํ์ธ์ด, ํ๋์ค์ด ๋ฑ๊ณผ ๊ฐ์ ์ธ์ด์ ํ์ค)vertical-rl: ์์ง ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก (์ผ๋ณธ์ด, ์ค๊ตญ์ด ๋ฑ ์ผ๋ถ ๋์์์ ์ธ์ด์์ ์ฌ์ฉ)
vertical-lr(์์ง ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ)๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ฐ๊ธฐ ๋ชจ๋๋ ์กด์ฌํ์ง๋ง ๋ ์ผ๋ฐ์ ์
๋๋ค.
ํ ์คํธ ๋ฐฉํฅ
ํ ์คํธ ๋ฐฉํฅ์ ํ ์ค ๋ด์์ ๋ฌธ์๊ฐ ํ์๋๋ ๋ฐฉํฅ์ ์ง์ ํฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ ์คํธ ๋ฐฉํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ltr: ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก (๋๋ถ๋ถ์ ์ธ์ด ํ์ค)rtl: ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก (์๋์ด, ํ๋ธ๋ฆฌ์ด, ํ๋ฅด์์์ด ๋ฑ๊ณผ ๊ฐ์ ์ธ์ด์์ ์ฌ์ฉ)
์ด๋ฌํ ์์ฑ๋ค์ ๊ฐ๊ฐ writing-mode์ direction CSS ์์ฑ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
.rtl-example {
direction: rtl;
}
.vertical-example {
writing-mode: vertical-rl;
}
ํต์ฌ ๋ ผ๋ฆฌ์ ์์ฑ
๊ฐ์ฅ ์ค์ํ CSS ๋ ผ๋ฆฌ์ ์์ฑ๋ค๊ณผ ๊ทธ๊ฒ๋ค์ด ๋ฌผ๋ฆฌ์ ์์ฑ๋ค๊ณผ ์ด๋ป๊ฒ ๊ด๋ จ๋๋์ง์ ๋ํ ๋ถ์์ ๋๋ค:
๋ฐ์ค ๋ชจ๋ธ ์์ฑ
์ด ์์ฑ๋ค์ ์์์ padding, margin, border๋ฅผ ์ ์ดํฉ๋๋ค.
margin-inline-start: LTR์์๋margin-left, RTL์์๋margin-right์ ๋์ผํฉ๋๋ค.margin-inline-end: LTR์์๋margin-right, RTL์์๋margin-left์ ๋์ผํฉ๋๋ค.margin-block-start: LTR๊ณผ RTL ๋ชจ๋์์margin-top๊ณผ ๋์ผํฉ๋๋ค.margin-block-end: LTR๊ณผ RTL ๋ชจ๋์์margin-bottom๊ณผ ๋์ผํฉ๋๋ค.padding-inline-start: LTR์์๋padding-left, RTL์์๋padding-right์ ๋์ผํฉ๋๋ค.padding-inline-end: LTR์์๋padding-right, RTL์์๋padding-left์ ๋์ผํฉ๋๋ค.padding-block-start: LTR๊ณผ RTL ๋ชจ๋์์padding-top๊ณผ ๋์ผํฉ๋๋ค.padding-block-end: LTR๊ณผ RTL ๋ชจ๋์์padding-bottom๊ณผ ๋์ผํฉ๋๋ค.border-inline-start: ๋ ผ๋ฆฌ์ ์์ ๋ฉด์ ํ ๋๋ฆฌ ์์ฑ์ ์ค์ ํ๊ธฐ ์ํ ๋จ์ถ ์์ฑ์ ๋๋ค.border-inline-end: ๋ ผ๋ฆฌ์ ๋ ๋ฉด์ ํ ๋๋ฆฌ ์์ฑ์ ์ค์ ํ๊ธฐ ์ํ ๋จ์ถ ์์ฑ์ ๋๋ค.border-block-start: ๋ ผ๋ฆฌ์ ์๋จ ๋ฉด์ ํ ๋๋ฆฌ ์์ฑ์ ์ค์ ํ๊ธฐ ์ํ ๋จ์ถ ์์ฑ์ ๋๋ค.border-block-end: ๋ ผ๋ฆฌ์ ํ๋จ ๋ฉด์ ํ ๋๋ฆฌ ์์ฑ์ ์ค์ ํ๊ธฐ ์ํ ๋จ์ถ ์์ฑ์ ๋๋ค.
์์: ํ ์คํธ ๋ฐฉํฅ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ํจ๋ฉ์ ๊ฐ์ง ๋ฒํผ ๋ง๋ค๊ธฐ:
.button {
padding-inline-start: 1em;
padding-inline-end: 1em;
}
์์น ์ง์ ์์ฑ
์ด ์์ฑ๋ค์ ๋ถ๋ชจ ์์ ๋ด์์ ์์์ ์์น๋ฅผ ์ ์ดํฉ๋๋ค.
inset-inline-start: LTR์์๋left, RTL์์๋right์ ๋์ผํฉ๋๋ค.inset-inline-end: LTR์์๋right, RTL์์๋left์ ๋์ผํฉ๋๋ค.inset-block-start: LTR๊ณผ RTL ๋ชจ๋์์top๊ณผ ๋์ผํฉ๋๋ค.inset-block-end: LTR๊ณผ RTL ๋ชจ๋์์bottom๊ณผ ๋์ผํฉ๋๋ค.
์์: ์ปจํ ์ด๋์ ์์ ๋ฐ ์๋จ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ์์น ์ง์ ํ๊ธฐ:
.element {
position: absolute;
inset-inline-start: 10px;
inset-block-start: 20px;
}
ํ๋ก์ฐ ๋ ์ด์์ ์์ฑ
์ด ์์ฑ๋ค์ ์ปจํ ์ด๋ ๋ด ์ฝํ ์ธ ์ ๋ ์ด์์์ ์ ์ดํฉ๋๋ค.
float-inline-start: LTR์์๋float: left, RTL์์๋float: right์ ๋์ผํฉ๋๋ค.float-inline-end: LTR์์๋float: right, RTL์์๋float: left์ ๋์ผํฉ๋๋ค.clear-inline-start: LTR์์๋clear: left, RTL์์๋clear: right์ ๋์ผํฉ๋๋ค.clear-inline-end: LTR์์๋clear: right, RTL์์๋clear: left์ ๋์ผํฉ๋๋ค.
์์: ์ฝํ ์ธ ํ๋ฆ์ ์์ ๋ถ๋ถ์ผ๋ก ์ด๋ฏธ์ง ๋์ฐ๊ธฐ:
.image {
float-inline-start: left; /* LTR๊ณผ RTL ๋ชจ๋์์ ์ผ๊ด๋ ์๊ฐ์ ๋ฐฐ์น */
}
ํฌ๊ธฐ ์์ฑ
inline-size: ์ํ ์ฐ๊ธฐ ๋ชจ๋์์๋ ์ํ ํฌ๊ธฐ๋ฅผ, ์์ง ์ฐ๊ธฐ ๋ชจ๋์์๋ ์์ง ํฌ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค.block-size: ์ํ ์ฐ๊ธฐ ๋ชจ๋์์๋ ์์ง ํฌ๊ธฐ๋ฅผ, ์์ง ์ฐ๊ธฐ ๋ชจ๋์์๋ ์ํ ํฌ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค.min-inline-sizemax-inline-sizemin-block-sizemax-block-size
์ด๋ค์ ํนํ ์์ง ์ฐ๊ธฐ ๋ชจ๋๋ก ์์ ํ ๋ ์ ์ฉํฉ๋๋ค.
๋ ผ๋ฆฌ์ ์์ฑ ์ฌ์ฉ์ ์ด์
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฑํํ๋ฉด ๊ตญ์ ์ ์ธ ์น ๋์์ธ์ ์ฌ๋ฌ ๊ฐ์ง ์ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๊ตญ์ ํ(I18N) ๊ฐ์ : ๋ค์ํ ์ฐ๊ธฐ ๋ชจ๋์ ํ ์คํธ ๋ฐฉํฅ์ ์๋์ผ๋ก ์ ์ํ๋ ๋ ์ด์์์ ๋ง๋ค์ด ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ๊ณผ์ ์ ๋จ์ํํฉ๋๋ค.
- ๋ฐ์์ฑ ํฅ์: ๋ ผ๋ฆฌ์ ์์ฑ์ ๋ฐ์ํ ๋์์ธ ์์น์ ๋ณด์ํ์ฌ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐฉํฅ์ ๋งค๋๋ฝ๊ฒ ์กฐ์ ๋๋ ๋ ์ด์์์ ๊ตฌ์ถํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ฝ๋ ์ ์ง๋ณด์์ฑ: ์ธ์ด๋ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ๋ณต์กํ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ๋ฐ ์กฐ๊ฑด๋ถ ์คํ์ผ๋ง์ ํ์์ฑ์ ์ค์ฌ ๋ ๊นจ๋ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด CSS๋ฅผ ๋ง๋ญ๋๋ค.
- ๋ณต์ก์ฑ ๊ฐ์: ํ๋ฉด์ ๋ฌผ๋ฆฌ์ ๋ฐฉํฅ์ ์ถ์ํํ์ฌ ๋ ์ด์์ ๊ท์น์ ๋ํด ์ถ๋ก ํ๊ณ ๋ค๋ฅธ ์ธ์ด์ ๋ฌธํ๊ถ์ ๊ฑธ์ณ ์ผ๊ด๋ ๋์์ธ์ ๋ง๋๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๋ฏธ๋ ๋๋น: ์ฐ๊ธฐ ๋ชจ๋์ ๋ ์ด์์ ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ ผ๋ฆฌ์ ์์ฑ์ ์น ๋์์ธ์ ๋ ์ ์ฐํ๊ณ ์ ์๋ ฅ ์๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ตญ์ ํ๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ 1: ๋ค๋น๊ฒ์ด์ ๋ฉ๋ด ๋ง๋ค๊ธฐ
LTR ์ธ์ด์์๋ ๋ฉ๋ด ํญ๋ชฉ์ ์ค๋ฅธ์ชฝ์, RTL ์ธ์ด์์๋ ์ผ์ชฝ์ ์ ๋ ฌํ๋ ค๋ ๋ค๋น๊ฒ์ด์ ๋ฉ๋ด๋ฅผ ์๊ฐํด๋ณด์ธ์.
.nav {
display: flex;
justify-content: flex-end; /* ํญ๋ชฉ๋ค์ ์ค์ ๋์ผ๋ก ์ ๋ ฌ */
}
์ด ๊ฒฝ์ฐ flex-end๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ฐฉํฅ์ ๋ํ ๋ณ๋์ ์คํ์ผ ์์ด๋ ๋ฉ๋ด ํญ๋ชฉ์ด LTR์์๋ ์ค๋ฅธ์ชฝ์, RTL์์๋ ์ผ์ชฝ์ ์ ๋ ฌ๋ฉ๋๋ค.
์์ 2: ์ฑํ ์ธํฐํ์ด์ค ์คํ์ผ๋ง
์ฑํ ์ธํฐํ์ด์ค์์ ๋ฐ์ ์์ ๋ฉ์์ง๋ ์ค๋ฅธ์ชฝ์, ์์ ์์ ๋ฉ์์ง๋ ์ผ์ชฝ์ ํ์ํ๊ณ ์ถ์ ์ ์์ต๋๋ค (LTR์์). RTL์์๋ ์ด๊ฒ์ด ๋ฐ๋๊ฐ ๋์ด์ผ ํฉ๋๋ค.
.message.sender {
margin-inline-start: auto; /* ๋ฐ์ ์ ๋ฉ์์ง๋ฅผ ๋์ผ๋ก ๋ฐ๊ธฐ */
}
.message.receiver {
margin-inline-end: auto; /* ์์ ์ ๋ฉ์์ง๋ฅผ ์์์ผ๋ก ๋ฐ๊ธฐ (LTR์์ ์ฌ์ค์ ์ผ์ชฝ) */
}
์์ 3: ๊ฐ๋จํ ์นด๋ ๋ ์ด์์ ๋ง๋ค๊ธฐ
LTR์์๋ ์ผ์ชฝ์ ์ด๋ฏธ์ง, ์ค๋ฅธ์ชฝ์ ํ ์คํธ ์ฝํ ์ธ ๊ฐ ์๋ ์นด๋๋ฅผ ๋ง๋ค๊ณ , RTL์์๋ ๊ทธ ๋ฐ๋๋ก ๋ง๋ญ๋๋ค.
.card {
display: flex;
}
.card img {
margin-inline-end: 1em;
}
์ด๋ฏธ์ง์ margin-inline-end๋ LTR์์๋ ์ค๋ฅธ์ชฝ์, RTL์์๋ ์ผ์ชฝ์ ์๋์ผ๋ก ์ฌ๋ฐฑ์ ์ ์ฉํฉ๋๋ค.
์์ 4: ์ผ๊ด๋ ์ ๋ ฌ๋ก ์ ๋ ฅ ํ๋ ์ฒ๋ฆฌํ๊ธฐ
LTR ๋ ์ด์์์์ ์ ๋ ฅ ํ๋ ์ค๋ฅธ์ชฝ์ ๋ ์ด๋ธ์ด ์ ๋ ฌ๋ ์์์ ์์ํด๋ณด์ธ์. RTL์์๋ ๋ ์ด๋ธ์ด ์ผ์ชฝ์ ์์ด์ผ ํฉ๋๋ค.
.form-group {
display: flex;
align-items: center;
}
.form-group label {
text-align: end;
padding-inline-end: 0.5em;
width: 100px; /* ๋ ์ด๋ธ ๊ณ ์ ๋๋น */
}
.form-group input {
flex: 1;
}
text-align: end๋ฅผ ์ฌ์ฉํ๋ฉด ํ
์คํธ๊ฐ LTR์์๋ ์ค๋ฅธ์ชฝ, RTL์์๋ ์ผ์ชฝ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. padding-inline-end๋ ๋ ์ด์์ ๋ฐฉํฅ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๊ฐ๊ฒฉ์ ์ ๊ณตํฉ๋๋ค.
๋ฌผ๋ฆฌ์ ์์ฑ์์ ๋ ผ๋ฆฌ์ ์์ฑ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ
๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ์ด๋ ค์ ๋ณด์ผ ์ ์์ง๋ง, ์ ์ง์ ์ธ ๊ณผ์ ์ ๋๋ค. ๋ค์์ ์ ์๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค:
- ๋ฐฉํฅ ์์กด์ ์คํ์ผ ์๋ณ:
left,right,margin-left,margin-right๋ฑ๊ณผ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ๋ CSS ๊ท์น์ ์๋ณํ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. - ๋
ผ๋ฆฌ์ ์์ฑ ๋์๋ฌผ ์์ฑ: ๊ฐ ๋ฐฉํฅ ์์กด์ ๊ท์น์ ๋ํด ๋
ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ๋ ํด๋น ๊ท์น์ ๋ง๋ญ๋๋ค (์:
margin-left๋ฅผmargin-inline-start๋ก ๊ต์ฒด). - ์ฒ ์ ํ ํ ์คํธ: LTR ๋ฐ RTL ๋ ์ด์์ ๋ชจ๋์์ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ์ฌ ์๋ก์ด ๋ ผ๋ฆฌ์ ์์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ RTL ํ๊ฒฝ์ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ต๋๋ค.
- ์ ์ง์ ์ผ๋ก ๋ฌผ๋ฆฌ์ ์์ฑ ๊ต์ฒด: ๋ ผ๋ฆฌ์ ์์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ค๊ณ ํ์ ํ๋ฉด ์๋์ ๋ฌผ๋ฆฌ์ ์์ฑ์ ์ ์ฐจ์ ์ผ๋ก ์ ๊ฑฐํฉ๋๋ค.
- CSS ๋ณ์ ํ์ฉ: CSS ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ณตํต ๊ฐ๊ฒฉ ๋๋ ํฌ๊ธฐ ๊ฐ์ ์ ์ํ์ฌ ์คํ์ผ์ ๊ด๋ฆฌํ๊ณ ์
๋ฐ์ดํธํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์๋ฅผ ๋ค์ด:
:root { --spacing-inline: 1em; } .element { margin-inline-start: var(--spacing-inline); margin-inline-end: var(--spacing-inline); }
๋ธ๋ผ์ฐ์ ์ง์
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ Chrome, Firefox, Safari, Edge๋ฅผ ํฌํจํ ์ต์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์์ ํ๋ฅญํ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์์ ์ ์์ต๋๋ค. ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด css-logical-props์ ๊ฐ์ ํด๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ๊ธฐ์
CSS Grid ๋ฐ Flexbox์ ๋ ผ๋ฆฌ์ ์์ฑ ๊ฒฐํฉํ๊ธฐ
๋
ผ๋ฆฌ์ ์์ฑ์ CSS Grid ๋ฐ Flexbox์ ์ํํ๊ฒ ์๋ํ์ฌ ๋ค์ํ ์ฐ๊ธฐ ๋ชจ๋์ ์ ์ํ๋ ๋ณต์กํ๊ณ ๋ฐ์ํ์ธ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Flexbox์์ justify-content: start ๋ฐ justify-content: end๋ฅผ ์ฌ์ฉํ์ฌ ํญ๋ชฉ์ ์ปจํ
์ด๋์ ๋
ผ๋ฆฌ์ ์์ ๋ฐ ๋์ ๊ฐ๊ฐ ์ ๋ ฌํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ์์ฑ(CSS ๋ณ์)๊ณผ ๋ ผ๋ฆฌ์ ์์ฑ ์ฌ์ฉํ๊ธฐ
์์์ ๋ณด๋ฏ์ด, CSS ๋ณ์๋ ๋ ผ๋ฆฌ์ ์์ฑ ์ฝ๋๋ฅผ ๋์ฑ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ณ ๊ฐ๋ ์ฑ ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๊ณตํต ๊ฐ๊ฒฉ ๋ฐ ํฌ๊ธฐ ๊ฐ์ ๋ณ์๋ก ์ ์ํ๊ณ ์คํ์ผ์ํธ ์ ์ฒด์์ ์ฌ์ฌ์ฉํ์ญ์์ค.
JavaScript๋ก ์ฐ๊ธฐ ๋ชจ๋ ๋ฐ ๋ฐฉํฅ ๊ฐ์งํ๊ธฐ
๊ฒฝ์ฐ์ ๋ฐ๋ผ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์ฐ๊ธฐ ๋ชจ๋๋ ๋ฐฉํฅ์ ๊ฐ์งํด์ผ ํ ์๋ ์์ต๋๋ค. getComputedStyle() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ writing-mode ๋ฐ direction ์์ฑ์ ๊ฐ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก
- ๋ ผ๋ฆฌ์ ์์ฑ ์ฐ์ ์ฌ์ฉ: ๊ฐ๋ฅํ๋ฉด ๋ฌผ๋ฆฌ์ ์์ฑ ๋์ ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ ์ด์์์ด ๋ค์ํ ์ฐ๊ธฐ ๋ชจ๋์ ์ ์ํ ์ ์๋๋ก ํ์ญ์์ค.
- ๋ค๋ฅธ ์ธ์ด๋ก ํ ์คํธ: LTR ๋ฐ RTL ์ธ์ด๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ด๋ก ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ฌ ๋ ์ด์์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
- ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ ํด๋ฆฌํ ์ฌ์ฉ: ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ๋ ผ๋ฆฌ์ ์์ฑ์ ์ง์ํ๊ธฐ ์ํด ํด๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค: ์ฐ๊ธฐ ๋ชจ๋๋ ๋ฐฉํฅ์ ๊ด๊ณ์์ด ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ๋ ์ด์์์ ์ ๊ทผํ ์ ์๋๋ก ํ์ญ์์ค.
- ์ผ๊ด์ฑ ์ ์ง: ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ํผ๋์ ํผํ๊ณ ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํ๋ก์ ํธ ์ ์ฒด์์ ์ผ๊ด์ฑ์ ์ ์งํ์ญ์์ค.
- ์ฝ๋ ๋ฌธ์ํ: CSS์ ์ฃผ์์ ์ถ๊ฐํ์ฌ ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฌ์ฉํ๋ ์ด์ ์ ์๋ ๋ฐฉ์์ ์ค๋ช ํ์ญ์์ค.
๊ฒฐ๋ก
CSS ๋ ผ๋ฆฌ์ ์์ฑ์ ๋ฐ์ํ, ๊ตญ์ ํ๋ ์น ๋ ์ด์์์ ๋ง๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ์ฐ๊ธฐ ๋ชจ๋์ ํ ์คํธ ๋ฐฉํฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ CSS์ ๋ ผ๋ฆฌ์ ์์ฑ์ ์ฑํํจ์ผ๋ก์จ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ธต์ ๋ง์กฑ์ํค๊ณ ๋ค์ํ ์ธ์ด์ ๋ฌธํ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ์ ์์ฑ์ ํ์ ๋ฐ์๋ค์ฌ ์น ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์์ ์๋ก์ด ์ฐจ์์ ์ ์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ด์ด๋ณด์ธ์. ์๊ฒ ์์ํ๊ณ , ์คํํ๋ฉฐ, ๊ธฐ์กด ํ๋ก์ ํธ์ ์ ์ง์ ์ผ๋ก ํตํฉํ์ญ์์ค. ๊ณง ๋ ์ ์๋ ฅ ์๊ณ ์ธ๊ณ๋ฅผ ์ธ์ํ๋ ์น ๋์์ธ ์ ๊ทผ ๋ฐฉ์์ ์ด์ ์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค. ์น์ด ๊ณ์ํด์ ๊ธ๋ก๋ฒํ๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ธฐ์ ์ ์ค์์ฑ์ ๋์ฑ ์ปค์ง ๊ฒ์ ๋๋ค.
์ถ๊ฐ ์๋ฃ
- MDN ์น ๋ฌธ์: CSS ๋ ผ๋ฆฌ์ ์์ฑ๊ณผ ๊ฐ
- CSS ๋ ผ๋ฆฌ์ ์์ฑ๊ณผ ๊ฐ ๋ ๋ฒจ 1 (W3C ๋ช ์ธ)
- ๋ ผ๋ฆฌ์ ์์ฑ์ ๋ํ ์๋ฒฝ ๊ฐ์ด๋
- CSS ๋ ผ๋ฆฌ์ ์์ฑ์ผ๋ก ๋ ์ด์์ ์ ์ดํ๊ธฐ
- RTLCSS: ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ(LTR) CSS๋ฅผ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RTL)์ผ๋ก ๋ณํํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํฉ๋๋ค.