ํฌ์ฆํผ์ปค 0.3.0 ๋ฒ์ ์์ ์๊ธด ๋ ์ด์์ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 0.3.1๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ณผ์ ์์ ์ผ์ด๋ ์ผ์ ๊ธฐ๋กํ ๊ธ์ด์์ Hotfix PR ๋ณด๋ฌ๊ฐ๊ธฐ
- ์ฌํ๋ฆฌ์์๋ง ํ๋ฉด ๋์ด๊ฐ ๋ค๋ฅด๋ค?
- ๋์ด์ ๋จ์ : vh vs dvh - ๋์ ๋ทฐํฌํธ
- dvh๊ฐ ์ ์ฉ๋์ง ์๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ํด๊ฒฐํ๊ธฐ
- ์ฌํ๋ฆฌ์๋ง css ๋ค๋ฅด๊ฒ ์ ์ฉํ๊ธฐ
webkit-fill-available
์ฐ๋นํํ ์ด์ํด๊ฒฐ๊ธฐ
๋ฐ๋จ: ์ ์ฒดํ๋ฉด ๋์ด๊ฐ ์ด์ํ ์ฌํ๋ฆฌ
- ์ฌํ๋ฆฌ์์๋ง ์ ์ฒด ํ๋ฉด ๋์ด๊ฐ ๋ค๋ฅด๊ฒ ์ง์ ๋์ด์ ๋ ์ด์์์ด ๋ฌ๋ผ์ง๋ ๋ชจ์ต์ด ํฌ์ฐฉ๋์๋ค.
- ๋ถ๋ช
ํ๋ฉด ๋์ด์ ๋ฐ๋ผ ์๋จ๊ณผ ํ๋จ ์์ญ์ ์ ์ธํ ๋๋จธ์ง ์์ญ์ flex๋ก ์ฑ์ฐ๋๋ก ๊ตฌํํด ๋์, ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ํ๋ฉด ํฌ๊ธฐ์ ๋์ํด์ ์ฌ์คํ๊ฒ ๊ฐ๋ฐํ ๋ถ๋ถ๋ถ์ด์๋๋ฐ...!
- ์ฌํ๋ฆฌ์์๋ง(ใ
ใ
) ์ด์ํ๊ฒ ๋์๋๋ ๊ฒ์ด์๋ค ๐ฅฒ
์ ๊ฐ: vh vs dvh
height: 100vh
๋ฅผ ์ฌ์ฉํด์ ์๊ธด ์ด์์๋ค
- vh๋ฅผ ์ ์ฉํ๋ฉด Safari ๋ธ๋ผ์ฐ์ ์์๋ ํ๋จ(๋๋ ์๋จ) ๋๊ตฌ ์์ญ์ ๋ฐ๋ผ ๋ทฐํฌํธ ๋์ด๊ฐ ๋ฌ๋ผ์ง๋ค.
- ์ฆ, ์ฌํ๋ฆฌ์์ 100vh๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋(๋๋ ์)์ ์๋ ๋๊ตฌ ์์ญ๊น์ง ํฌํจํด์ ๋์ด๋ฅผ ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋ณด์ด๋ ์์ญ๋ณด๋ค ์ข ๋ ํฌ๊ฒ ์กํ
- ์ด ๋๋ฌธ์ ํ๋ฉด ์ ์ฒด ๋์ด๋ฅผ ์ง์ ํ๋ ค๋ฉด vh ๋์ dvh ๋ผ๋ ๋์ ๋์ด ๋จ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค
- 100dvh ๋ก ์ง์ ํ๋ฉด ์ฌํ๋ฆฌ์์๋ ๋ณด์ฌ์ง๋ ํ๋ฉด ์์ญ์ ์ ์ง์ ํ๋ค
body {
min-height: 100dvh;
}
- ์ฐธ๊ณ ๋ก ๋ณธ ํ๋ก์ ํธ์์๋ Tailwind CSS๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
min-h-screen
๋ฅผ min-screen-[100dvh]
์ผ๋ก ๋ฐ๊ฟจ๋ค
๊ทธ๋ฐ๋ฐ.
์๊ธฐ: dvh๊ฐ ์ ์ฉ๋์ง ์๋ ๋ธ๋ผ์ฐ์
- ํน์ ๋ธ๋ผ์ฐ์ ์์๋ dvh๊ฐ ์ ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์น height๋ฅผ ์์ ์ง์ ํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋๋ค
- ๊ทธ๋ ๊ฒ ์ด๋ฒ์๋ ์ฌํ๋ฆฌ์์๋ ์๋ํ๋๋ก ๋ณด์ด๊ณ ํ ๋ธ๋ผ์ฐ์ ์์ ๋ ์ด์์์ด ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ํ์์ด ๋ฐ์ํด๋ฒ๋ ธ๋ค
- ํนํ ์์์ด flex ์์ฑ์ ๊ฐ์ง๊ณ ์๋๋ฐ ๋ถ๋ชจ์๊ฒ dvh๋ก ๋์ด๋ฅผ ์ง์ ํ๋ฉด ๊ทธ ์์ ์์๊ฐ ์์ ์๋ณด์ด๋ ์ฌ๊ฐํ ์ด์๊ฐ ์๊ฒจ๋ฒ๋ ธ๋ค (flex๋ ๋ถ๋ชจ์ ๋์ด์ ๋ฐ๋ผ ์ ๋์ ์ผ๋ก ๋ณํํ๋๋ฐ ๋ถ๋ชจ์ ๋์ด๊ฐ ์์ผ๋ฉด(0์ด๋ฉด) ์ฌ์ค์ ์์ด์ง)
- ๋ด๊ฐ ๋ฐ๊ฒฌํ dvh๊ฐ ์ ์ฉ ์๋๋ ๋ธ๋ผ์ฐ์ ๋ Chrome ๋ฐ ํฌ๋กฌ ๊ธฐ๋ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ค(์จ์ผ, ์ผ์ฑ์ธํฐ๋ท, react native webView ๋ฑ)์ด ์์๋ค.
(์จ๊ฒจ์ง) ๋ฐ๋จ
์ฐธ๊ณ ๋ก ์ด ๊ธ์ ์ฐ๊ฒ ๋ ๊ณ๊ธฐ์ด์ ์ด ๋์ด ์ง์ ์ ํฌํจํ ๋ ์ด์์ ๊ด๋ จ ์คํ์ผ๋ง ์ฝ๋๋ฅผ ์ ๋ถ ๋ฏ์ด๋ณด๊ณ ๋ฆฌํฉํ ๋งํ๊ฒ ๋ ๊ณ๊ธฐ๋ ์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์น๋ทฐ์์๋ง ๋ ์ด์์์ด ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ์ด์ ๋๋ฌธ์ด๋ค^^ ์ํ๋ก๊ทธ์๋ ์ฐ๊ฒ ์ง๋ง ์ ๊ฑฐ ๋๋ฌธ์ ์ง์ง ๋๋ถ์ ๋ง์๊ฑธ ๋ฐฐ์๊ฐ๋ค..(ํ ํ !)
๊ทธ๋ฌ๋ฉด ์ฌํ๋ฆฌ๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ ์ค ํ๋๋ ๋ ์ด์์์ ํฌ๊ธฐํด์ผํ ๊น?
๋น์ฐํ ์๋๋ค
์ ์ : ์ฌํ๋ฆฌ๋ง ๋ค๋ฅด๊ฒ ์คํ์ผ๋งํ๊ธฐ
- ๋ฏธ๋์ด์ฟผ๋ฆฌ @supports๋ฅผ ์ด์ฉํด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ถ๊ธฐ์ฒ๋ฆฌํ๋ฉด ์ฌํ๋ฆฌ ๊ฐ์ ํน์ ๋ธ๋ผ์ฐ์ ์๋ง ํน์ css๋ฅผ ์ ์ฉํ ์ ์๋ค.
- ์ฌ์ค ์๋ฐ์คํฌ๋ฆฝํธ๋ก user.agent๋ฅผ ์ฌ์ฉํ ๋ ์ฒ๋ผ ์ ํํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์์๋ด๋๊ฑด ์๋๋ค
- ๋์ -webkit-touch-callout: none ์์ฑ์ ์ง์ํ๋์ง๋ฅผ ํ์ธํ๋ฉด์ webkit ๊ธฐ๋ฐ ๋ธ๋ผ์ฐ์ ์ธ์ง ๊ทธ ์ฌ๋ถ๋ฅผ ์์๋ด๋ ๋ฐฉ์์ด๋ค
- ์ฌํ๋ฆฌ๋ ๋ํ์ ์ธ ์นํท ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ์์ฑ ์ง์ ์ฌ๋ถ๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ ๊ฒ css๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌํ๋ฆฌ์ธ์ง ์๋์ง ๊ตฌ๋ถ ๊ฐ๋ฅํ๋ค
@supports (-webkit-touch-callout: none) {
body {
min-height: 100dvh;
}
}
- ์ฐธ๊ณ ๋ก ์๋ webkit-touch-callout์ ๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด์ ๊ธธ๊ฒ ๋๋ ์ ๋ ๋์ค๋ ๋์(๋งํฌ ๊ณต์ ๋ ์ ํญ ์ด๊ธฐ ๊ฐ์ ๊ฒ๋ค)์ ์ ์ดํ๋ ์์ฑ์ด์ง๋ง.. ์ฌ๊ธฐ์๋ ์นํท ๋ธ๋ผ์ฐ์ ๋ถ๊ธฐ์ฒ๋ฆฌ์ ์ด์ฉ๋์๋ค
๊ฒฐ๋ง: -webkit-fill-available
- ๊ตฌ๊ธ๋ง ํ๋ค๋ณด๋ ์ด๋ฐ ๊ฒ๋ ์์๋ค
- ๋ทฐํฌํธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ง๊ฒ ๋์ด๋ฅผ ์ฑ์์ ์ง์ ํด์ฃผ๋ ์์ฑ์ด๋ผ๊ณ ํ๋ค
- ๋์ ์ผ ๋๋ 100dvh๋ก ์๋ ์ง์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์์๊ฐ๋
์ด๊ณ ํธํ๊ธด ํ๋ฐ,,,
- ๋ง์ฐฌ๊ฐ์ง๋ก ์นํท ๊ธฐ๋ฐ์ด๋ผ ํฌ๋กฌ ๊ฐ์ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์๋ ์ ์ฉ๋์ง ์๋๋ค.
- ์๋ ์ต์ข
์ฝ๋์ฒ๋ผ ๋ฐ๋ก ์ง์ ํด์ฃผ์
body {
min-height: 100vh;
}
@supports (-webkit-touch-callout: none) {
body {
min-height: -webkit-fill-available;
}
}
Epilogue
๊ดํ ์น์ผ๋ก ๋ง๋ ์๋น์ค๋ฅผ ์ฑ์ผ๋ก ๋น๋ํ๊ฒ ๋ค๊ณ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์น๋ทฐ ์ผ๋ค๊ฐ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ๋ฌ๋ผ์ css ๋ค๋ฅด๊ฒ ์ ์ฉ๋๊ณ ,, ๋์ฒด ์ ๋ค๋ฅธ๊ฑฐ๋๊ณ ์ธ์น๋ฉฐ ์ด๊ฒ์ ๊ฒ ๋ง์ ๊ฒ์ ์๋ํ๋ฉฐ ๋๋ฆฌ์ณค๋๋ฐ
๊ทธ๋ฌ๋ค๋ณด๋ ์ด์ ๊ธฐ๊ธฐ๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ๊น์ง ์๊ฐํด๊ฐ๋ฉฐ ์คํ์ผ๋ง ๊ด๋ จ ์ฝ๋๋ฅผ ๋๋ฒ๊น
ํ๊ณ ๋ฆฌํฉํ ๋งํ๋ ๋จ๊ณ์ ์ด๋ฅด๋ ๋ค.
์ด ๊ธ์์ ๋ค๋ฃฌ ๋์ ๋ทฐํฌํธ ๋์ด ์ด์๊ฐ ๋ฐ๋ก ๊ทธ ์ค ํ๋...
๋ค๋ฅธ ์ด์ ํด๊ฒฐ๊ธฐ๋ ๋์ค์ ๊ธฐํ๊ฐ ๋๋ฉด ์จ๋ณด๋๊ฑธ๋ก..
์ง๊ธ ์ด ์ด์๋ฅผ ํด๊ฒฐํ๋ ค๊ณ 2์๊ฐ์ ๋ ์ฝ์ง์ ํ๋๋ฐ ๊ทธ๋๋ ์ด ๊ธฐํ๋ก ๋ง์ด ๋ฐฐ์ฐ๊ณ ํ์ธต ๋ ์ฑ์ฅํ ๊ฒ ๊ฐ์ ๋ฟ๋ฏํ๋ค :)
ํ๋ ์ด์คํ ์ด ๋ฐฐํฌ๋ ๋ฌด๋ํ ์ ํ ์ ์๊ธฐ๋ฅผ ๐
๊ตฌ์ธ์ฃผ๋ค