๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ก issue

-webkit-overflow-scrolling ์†์„ฑ๊ณผ stacking context ์ด์Šˆ

by HandHand 2022. 7. 4.

๐Ÿ“Œ ๋ถ€๋“œ๋Ÿฌ์šด overflow ์Šคํฌ๋กค์„ ์œ„ํ•œ css ์†์„ฑ

๊ฐ„๋‹จํ•œ overflow container ์˜ˆ์‹œ

์ด์ „๋ถ€ํ„ฐ HTML ์š”์†Œ์— overflow ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ

์Šคํฌ๋กค ํ˜•ํƒœ๋กœ ์ปจํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด CSS ๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

.container {
  display: flex;
  flex-direction: row;
  overflow-x: scroll;
  flex-wrap: nowrap;
  width: 200px;
}

 

ํŠนํžˆ iOS ์˜ ๊ฒฝ์šฐ ์Šคํฌ๋กค ๋ฐ”์šด์Šค ํšจ๊ณผ๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด

์Šคํฌ๋กค ๊ด€๋ จ vendor prefix ๋ฅผ ํฌํ•จํ•œ CSS ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

-webkit-overflow-scrolling: touch;

 

์—ฌ๊ธฐ์„œ touch ๋กœ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๋ชจ๋ฉ˜ํ…€ ๊ธฐ๋ฐ˜ ์Šคํฌ๋กค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์ผ๋ฐ˜์ ์ธ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ๊ณผ ๊ฐ™์ด ์Šคํฌ๋กค ๋„์ค‘ ์†๊ฐ€๋ฝ์„ ํ™”๋ฉด์—์„œ ๋–ผ์–ด๋„ ์ผ์ •์‹œ๊ฐ„ ์Šคํฌ๋กค์ด ์ง€์†๋ฉ๋‹ˆ๋‹ค.

 

โš ๏ธ Safari 13 ๋ถ€ํ„ฐ๋Š” ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Safari 13 ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ํ•ด๋‹น ๋ฒ„์ „๋ถ€ํ„ฐ overflow: scroll ์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋ฉ˜ํ…€ ์‹œํฌ๋กค์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํ•ด๋‹น ์†์„ฑ์„ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์ƒˆ๋กœ์šด ์Œ“์ž„ ๋งฅ๋ฝ

์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋†“์นœ ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์Œ“์ž„ ๋งฅ๋ฝ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์—์„œ overflow ์‹œ ๋ชจ๋ฉ˜ํ…€ ๊ธฐ๋ฐ˜ ์Šคํฌ๋กค์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๊ฐ€

์Œ“์ž„ ๋งฅ๋ฝ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ก ์Œ“์ž„ ๋งฅ๋ฝ์ด๋ž€?

์Œ“์ž„ ๋งฅ๋ฝ์€ ๊ฐ€์ƒ์˜ Z์ถ•์„ ๊ธฐ์ค€์œผ๋กœ HTML ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
๋ชจ๋“  HTML ์š”์†Œ๊ฐ€ ์Œ“์ž„ ๋งฅ๋ฝ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ž์‹ ์˜ ์†์„ฑ์— ๊ทผ๊ฑฐํ•ด 3์ฐจ์›์ƒ์˜ ์œ„์น˜๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ..

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ -webkit-overflow-scrolling ์†์„ฑ์ด ์ ์šฉ๋จ์— ๋”ฐ๋ผ

์ƒˆ๋กœ์šด ์Œ“์ž„ ๋ฌธ๋งฅ์ด ์ƒ์„ฑ๋˜์—ˆ๊ณ , ์ด๋กœ ์ธํ•ด ๊ธฐ์กด์— ์„ค์ •๋œ z-index ๊ฐ’์— ์˜ํ•ด

popup ์ด ์—‰๋šฑํ•œ ๊ณณ์— ๋ Œ๋”๋ง๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

โœ… ์Œ“์ž„ ๋งฅ๋ฝ ์ด์Šˆ ์˜ˆ์‹œ

==================================
              page

   ----------------------------
 |          container           |
 |                              |
 |       ----------------       |
 |      |     popup      |      |
 |      |                |      |
 |      |   z-index: 1   |      |
 |      |                |      |
 |       ----------------       |
 |                              |
   ----------------------------

==================================

์—ฌ๊ธฐ์„œ container ๋Š” ์ตœ์ƒ์œ„ HTML ์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜์œ„ ์š”์†Œ์ด๋ฉฐ

popup ์€ ์ตœ์ƒ์œ„ ๋ ˆ์ด์–ด๋ฅผ ๋ฎ๋Š” Overlay ์š”์†Œ ์œ„์— ๊น”๋ฆฌ๋Š” ์ปดํฌ๋„ŒํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์—

ํŽ˜์ด์ง€ ์ผ๋ถ€์˜์—ญ์—๋งŒ dimmed ์ฒ˜๋ฆฌ๋˜๊ณ  ํ•ด๋‹น ์˜์—ญ ์œ„์— ํŒ์—…์ด ๋œจ๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

-webkit-overflow-scrolling ์†์„ฑ์ด ์ ์šฉ๋œ container ๊ฐ€ ์ƒˆ๋กœ์šด ์Œ“์ž„ ๋ฌธ๋งฅ์„ ์ƒ์„ฑํ•˜๊ณ 

ํ•˜์œ„ popup ์ด ๊ณ ์œ ์˜ z-index ์„ค์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ์ด์Šˆ์˜€๊ณ ,

์ด๋Š” popup ์„ ํฌํ•จํ•˜๋Š” container ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์ฐธ๊ณ ์ž๋ฃŒ

Apple Developer Documentation

-webkit-overflow-scrolling - CSS: Cascading Style Sheets | MDN

๋ฐ˜์‘ํ˜•

๐Ÿ’ฌ ๋Œ“๊ธ€