-
Notifications
You must be signed in to change notification settings - Fork 111
Description
μλ νμΈμ.
react-ui-coreμ swipe back μ λλ©μ΄μ
(curpertino theme)μμ λμ»₯μμ΄ λκ»΄μ§λ νμμ΄ μμ΄ μ΄μλ₯Ό 곡μ λ립λλ€.
1. λ°°κ²½
useStyleEffectSwipeBack ν
μμ μ€μμ΄νλ°± μ μ€μ² μ€ touchend κ° λ°μνλ©΄, ν΄λΉ μμ μ v(μλ)λ₯Ό κΈ°μ€μΌλ‘ μ€μμ΄ν λ°± μ¬λΆλ₯Ό νλ¨νκ³ μμ΅λλ€.
stackflow/extensions/react-ui-core/src/useStyleEffectSwipeBack.ts
Lines 261 to 276 in 57fd2da
| const onTouchEnd = () => { | |
| if (!x0 || !t0 || !x) { | |
| resetState(); | |
| return; | |
| } | |
| const t = Date.now(); | |
| const v = (x - x0) / (t - t0); | |
| const swiped = v > 1 || x / $paper.clientWidth > 0.4; | |
| onSwipeEnd?.({ swiped }); | |
| Promise.resolve() | |
| .then(() => resetActivity({ swiped })) | |
| .then(() => resetState()); | |
| }; |
μ€μμ΄ν λμλ€κ³ νλ¨λ κ²½μ° pop μ΄ μ€νλκ³ , μ΄ν resetActivityλ₯Ό νΈμΆνμ¬ swipe back μ λλ©μ΄μ
μ΄ μ§νλ©λλ€.
stackflow/extensions/react-ui-core/src/useStyleEffectSwipeBack.ts
Lines 82 to 88 in 57fd2da
| requestAnimationFrame(() => { | |
| $dim.style.opacity = `${1 - ratio}`; | |
| $dim.style.transition = "0s"; | |
| $paper.style.overflowY = "hidden"; | |
| $paper.style.transform = `translate3d(${dx}px, 0, 0)`; | |
| $paper.style.transition = "0s"; |
μ€μμ΄ν λ°± μ λλ©μ΄μ
μ translate3d + transition κΈ°λ°μΌλ‘ μ²λ¦¬λκ³ μμ΅λλ€.
2. λ¬Έμ μ
νμ¬ κ΅¬ν λ°©μμμλ touchend μ§μ μ μ¬μ©μ ν°μΉ μ΄λ μλκ° μ λλ©μ΄μ
μμ ꡬκ°μ λ°μλκ³ μμ§ μμ΅λλ€.
μ΄λ₯Ό 거리-μκ° κ·Έλνλ‘ νννλ©΄ μλμ κ°μ ννκ° λ©λλ€.
λΉ¨κ° μμΌλ‘ νμν μ§μ μ²λΌ, μ λλ©μ΄μ
μμ μμ μμ μλκ° λΆμ°μμ μΌλ‘ λ³ννκ² λ©λλ€.
μ¦, ν΄λΉ μ§μ μ λ―ΈλΆ λΆκ°λ₯ν μ§μ μ΄λλ©° κ·Έ κ²°κ³Ό μ¬μ©μ μ
μ₯μμλ λμ»₯μμ΄ μ²΄κ°λ©λλ€.
νΉν λΉ λ₯΄κ² μ€μμ΄ν ν μλ‘ μ΄ λμ»₯μμ μ¬νκ² λκ»΄μ§λλ€.
default.mp4
λ
Ήν μμ μ¬λ €λ립λλ€.
(λ
Ήνλ³ΈμΌλ‘λ μ 체κ°λμ§λ μμ κ² κ°μ΅λλ€.)
νλ‘μ νΈμμ stackflow μ€νμμ€ μ λ§ μ μ¬μ©νκ³ μμ΅λλ€.
μ’μ μ€νμμ€ λ§λ€μ΄μ£Όμ
μ κ°μ¬ν©λλ€.