[PosePicker v1.0.1] ๐Ÿšจ ์‚ฌํŒŒ๋ฆฌ๋งŒ ๋‹ค๋ฅธ ํ™”๋ฉด ๋†’์ด ์ด์Šˆ ํ•ด๊ฒฐ๊ธฐ

SeonDalยท2024๋…„ 4์›” 17์ผ
1

๐Ÿช„ PosePicker Tech Blog

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail
post-custom-banner

ํฌ์ฆˆํ”ผ์ปค 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์‹œ๊ฐ„์ •๋„ ์‚ฝ์งˆ์„ ํ–ˆ๋Š”๋ฐ ๊ทธ๋ž˜๋„ ์ด ๊ธฐํšŒ๋กœ ๋งŽ์ด ๋ฐฐ์šฐ๊ณ  ํ•œ์ธต ๋” ์„ฑ์žฅํ•œ ๊ฒƒ ๊ฐ™์•„ ๋ฟŒ๋“ฏํ•˜๋‹ค :)
ํ”Œ๋ ˆ์ด์Šคํ† ์–ด ๋ฐฐํฌ๋„ ๋ฌด๋‚œํžˆ ์ž˜ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๐Ÿ™

๊ตฌ์„ธ์ฃผ๋“ค


profile
๊น€์„ ๋‹ฌ ๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€