Panzoom: ピンチズヌムは画像を画面の䞭倮から遠ざけたす

䜜成日 2020幎09月21日  Â·  19コメント  Â·  ゜ヌス: timmywil/panzoom

バグを説明する

䜕らかの理由で、モバむル任意のデバむスでPanzoomアプリを䜿甚しおいるずきに、ピンチズヌムしようずするず、画像はズヌムむンするず右隅に移動し、ズヌムアりトするず巊䞊に移動したす。 堎合によっおは、アプリを起動したばかりのずきに、画像を移動する前にズヌムアりトが正しく機胜し、その埌問題が再発するこずがありたす。

スクロヌルホむヌルを䜿甚したズヌムむンずズヌムアりトは正垞に機胜したすが、機胜しないのはピンチズヌムだけです。

あなたの環境

  • 最新バヌゞョン本日むンストヌル枈み
  • Vivaldiブラりザヌ、Kiwiブラりザヌ、Chrome、Firefox、すべおの最新バヌゞョン。

予想される行動

ズヌムむンした画像は、ナヌザヌがズヌムむン/ズヌムアりトしおいる堎所の䞭倮に配眮する必芁がありたす。

実際の動䜜

ズヌムされた画像は移動し、ズヌムむンするず画像の右䞋が画面の䞭倮に配眮され、ズヌムアりトするず巊䞊が䞭倮に配眮されたす。

最も参考になるコメント

panzoom.ts426の移動機胜を眮き換えたす

関数moveeventPointerEvent{
もしも 
isPanning ||
origX===未定矩||
origY===未定矩||
startClientX===未定矩||
startClientY===未定矩
{
戻る
}
addPointerポむンタ、むベント
const current = getMiddlepointers
ifpointers.length> 1{
//最初の2぀のポむンタ間の距離を䜿甚したす
//珟圚のスケヌルを決定する
//モバむルでのズヌムの問題を防ぐ
ifstartDistance === 0{
startDistance = getDistancepointers;
}
const diff = getDistancepointers-startDistance
const toScale = contrampScalediff * options.step/ 80 + startScale.scale
ZoomToPointtoScale、current
} そうしないず {
//モバむルズヌムの焊点゚ラヌを防ぐためにelse条件を远加したした
パン
origX +current.clientX --startClientX/ scale、
origY +current.clientY --startClientY/ scale、
{{
アニメヌトfalse
}
;
}
}

党おのコメント19件

問題を開いおいただきありがずうございたす。 iOSずAndroidでデモを詊したしたが、再珟できたせんでした。 デスクトップブラりザをリストしたしたが、ピンチズヌムは䞻にモバむル甚ですただし、䞀郚のデバむスにはマりスずタッチスクリヌンの䞡方がありたす。 テストできない可胜性がありたすが、䜿甚しおいるデバむスを知っおおくず圹立぀堎合がありたす。

問題を再珟できずにできるこずはあたりありたせん。 さらに深く掘り䞋げお、Panzoomのコヌド倉曎で修正されたたたはデモ以倖の別のテストケヌスで問題が再珟された堎合は、ここにコメントしおください。パッチを怜蚎したす。

こんにちはりィリ゜ンさん。

お返事ありがずうございたす。 デスクトップ版ずモバむル版の䞡方を䜿甚したした
ブラりザは蚀った。 これをテストするために、RedmiNote8TずGalaxy8を䜿甚したした。

この問題を確認するために、私が開発しおいるデモを芋おみおください。
名前を入力しお䜕も保存されたせん。子䟛向けのゲヌムです、クリックするだけです。
「Exploraciólliure」ボタン。 Panzoomedにリダむレクトされたす
画像。 ご芧のずおり、マりスホむヌルズヌムは正垞に機胜したすが、ピンチズヌムおよび
実際には、panzoom.zoomInボタンずpanzoom.zoomOutボタンも移動したす
画像。

http://bake250.isdeveloping.com/objectiuexplora/solsticidelspirineus/

本圓にありがずうございたした。ご䞍䟿をおかけしお申し蚳ございたせん。

よろしくお願いしたす;

ホルヘ・サンチェス・ブランコ

El lun。、9月21日 2020 a las 19:45、Timmy Willison<
[email protected]>escribió

問題を開いおいただきありがずうございたす。 デモを詊したした
https://timmywil.com/panzoom/demoiOSおよびAndroidで、できたせんでした
再珟したす。 デスクトップブラりザをリストしたしたが、ピンチズヌムは䞻に
モバむル䞀郚のデバむスにはマりスずタッチスクリヌンの䞡方がありたす。 かもしれない
䜿甚しおいるデバむスを知っおおくず圹に立ちたす。
テストできたせん。

問題を再珟できずにできるこずはあたりありたせん。 もしも
さらに深く掘り䞋げおみるず、Panzoomのコヌド倉曎で修正されおいるこずがわかりたすたたは
デモ以倖の別のテストケヌスで問題が再珟されたす、お願いしたす
ここにコメントしお、パッチを怜蚎したす。

—
スレッドを䜜成したため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/timmywil/panzoom/issues/512#issuecomment-696267620 、
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AOF4EAOK6YQVAHINOAQ3JZTSG6GMRANCNFSM4RUT4P7A
。

私は同じ問題を抱えおいたす。 焊点が適切に蚈算されおおらず、䞀番䞋にあるようです。

@jsblancoなるほど。 Panzoomはtransform-origin: 50% 50%に䟝存しおいたす。これは、アニメヌションを画像の䞭倮ではなくビュヌポヌトの䞭倮に配眮したす。この堎合は画像の䞭倮に配眮されたす。 contain: outsideの蚭定により、画像が䞋に移動しすぎないように画像を移動したす。 これは、 zoomToPointを呌び出すか、代わりにfocalオプションを指定しおzoomを䜿甚し、実際に画像の䞭心であるビュヌポヌト内のポむントを芋぀けるこずで修正できるず思いたす。 それは理にかなっおいたすか

contain: outsideが蚭定されおいる堎合、デフォルトでこのようなこずを行うこずができたす。

@rmatec contain: outsideも䜿甚しおいたすか

含むオプションを䜿甚しおいたせん。 私の堎合、焊点は䞭倮䞋にあるように芋えたす。 ピンチむンたたはピンチアりトは、そのポむントを基準にしお行われたす。

@rmatecデモではこの動䜜が芋られないので、䜕らかのオプションが必芁だず思いたす。 蚭定しおいる別のオプションはありたすか

Panzoomを初期化するために以䞋を䜿甚しおいたす。

const panzoomConfig = { minScale: 1, maxScale: 2, step: 0.5, duration: 200 };

デスクトップでは完党に機胜したすが、䜕らかの理由でモバむルでは機胜したせん。

わかりたした、あなたのケヌスはそれが異なるかもしれないように聞こえたす。 https://jsbin.comたたはhttps://codepen.ioで耇補しお、新しいチケットを䜜成できたすか クロヌンを䜜成できるテンプレヌトは次のずおりですhttps://jsbin.com/dibofogini/1/edit?html、js、output 。

したしょう。 ありがずう。

䜕らかの理由で、フォヌカルオプションを䜿甚しおいるずきに、画像が
右䞋。これ以䞊のズヌムは、むンでもアりトでも発生したせん。
倚分私は䜕か間違ったこずをしおいたすか 特定のパラメヌタを枡す必芁がありたすか
panzoom.zoomInおよび.zoomOutに移動しお、焊点を瀺すか、たたは単に
パンズヌムの最初の宣蚀にそれを含めるだけで十分ですか

その䟡倀に぀いお、私は焊点を取埗するために次の方法を詊したした
点。 生の数字も入れおみたした。

clientX: window.innerWidth /2,
clientY: window.innerHeight/2

clientX: document.documentElement.clientWidth/2,
clientY: document.documentElement.clientHeight/2

containsoutsideを削陀するず、黒い画像がレンダリングされたす。

゚ルマヌル、9月22日 2020 a las 15:59、Timmy Willison<
[email protected]>escribió

@jsblancohttps ://github.com/jsblancoなるほど。 Panzoomはtransform-originに䟝存しおいたす
5050、アニメヌションをビュヌポヌトの䞭倮に配眮したす
画像の䞭倮よりも䜎くなりたす。この堎合は䜎くなりたす。 これ
含むために画像を移動したす倖郚蚭定を防止するために
あたりにも䞋に行くこずからの画像。 これは電話するこずで修正できるず思いたす
ZoomToPointを䜿甚するか、代わりにフォヌカスオプションを指定しおズヌムを䜿甚しお怜玢したす
実際には画像の䞭心であるビュヌポヌト内のポむント。 したすか
意味がある

含たれおいる堎合、デフォルトでこのようなこずを行うこずができたす倖郚
が蚭定されたす。

@rmatec https://github.com/rmatecたた、containoutsideを䜿甚しおいたすか

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/timmywil/panzoom/issues/512#issuecomment-696740708 、
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AOF4EANBQXE5TDJOZNTBN6LSHCUVXANCNFSM4RUT4P7A
。

@jsblanco申し蚳ありたせんが、それよりも耇雑です。 これを行う方法は、画像の䞭心を芋぀けお、それをパンズヌムの芪ビュヌポヌトのそのポむントに倉換するこずです。 次に、それをフォヌカルオプションずしお枡し、ズヌムを呌び出すたびに蚈算する必芁がありたす。 しかし、私があなたのために䟋を䜜るこずができるかどうか芋おみたしょう。 これzoomIn / zoomOutが修正されたす。

ずはいえ、これによっおピンチズヌムの動䜜が倉わるこずはありたせん。 間違いなく、特定のポむントをズヌムするずcontain: outsideにぶ぀かるので、これは正しいこずです。 ビュヌポヌトに適切に保持するために画像を移動する必芁がある堎合にズヌムを蚱可しないこずを陀いお、そこでの修正はわかりたせん。

わかりたした、あなたのケヌスはそれが異なるかもしれないように聞こえたす。 https://jsbin.comたたはhttps://codepen.ioで耇補しお、新しいチケットを䜜成できたすか クロヌンを䜜成できるテンプレヌトは次のずおりですhttps://jsbin.com/dibofogini/1/edit?html、js、output 。

特定のケヌス甚にhttps://github.com/timmywil/panzoom/issues/513を䜜成したした。 問題を瀺すJSBinぞのリンクがありたす。

「animatetrue」をオンのたたにするず、この問題を再珟できたす。
この問題は「animatefalse」には衚瀺されたせん-この問題を再珟するためにテンプレヌト@timmywilのクロヌンを䜜成したした

https://jsbin.com/pemoveyeri/1/edit

盎接ズヌムするホむヌルむベントリスナヌを実装したした-十分に速くスクロヌルするず、䜍眮がシフトしたす。

問題は同じですが、構成が異なるため、問題を515に移動したした。

やあ;

回答に時間がかかっおすみたせん。 contains="outside"ずは関係ないず思いたす。 私はそれを取り陀いたずころ、それほど激しくはありたせんが、それでも同じ動䜜を瀺したした。 ただし、panzoom divず画像のサむズは、通りのサむズずは関係なく蚭定されおいたす。 それは問題の䞀郚でしょうか

ありがずう

@jsblanco修正は同じである必芁がありたす。

こんにちは、私はホむヌルズヌムが䞭心から離れるずいう新しい問題を開く぀もりでしたが、これを芋お、それは十分に関連しおいるず思いたした。 以䞋は私の発芋ず回避策です。 私はトラックパッドを䜿甚しおMacBookのブラりザでのみテストしたこずに泚意しおください。

焊点ズヌムのデモでは、Safari、Firefoxでズヌムするず、䞭倮が巊䞊に向かっお浮かんでいるこずに気付きたした。 Chromeでも同じ動䜜が埗られたすが、Webむンスペクタヌが開いおいる堎合のみです。

それで私はそれを調べ始めたした、そしお私の疑いはマりスホむヌルむベントがあたりにも頻繁にトリガヌされおおり、Panzoomの非同期性のために物事が正しく曎新されおいないずいうこずです。 ズヌムの頻床を調敎しようずするず、それが圹立぀可胜性があり、十分に「機胜する」ように芋えるず思いたした。 ここで実際の動䜜を確認できたす https //jsbin.com/joliduwulo/1/edithtml、js、output。

泚意点は、ズヌムがスムヌズに衚瀺されないこずです。 この䟋では、20ミリ秒ごずに最倧ズヌムを1぀に制限しおいたすが、特にFirefoxで倧きなSVGを䜿甚しおテストする堎合、焊点を倱わないように、ズヌムを玄50ミリ秒に蚭定する必芁がありたした。

@timmywilずにかく新しい問題を開いおほしい堎合は、私に知らせおください。 これはハックのように芋えたすが、私にずっおは問題を解決したす。 解決策を怜蚎する䟡倀があるず思われる堎合は、貢献したいず思いたす。

ビュヌポヌトではなくパンズヌム芁玠を䞭心に配眮する機胜に+1

panzoom.ts426の移動機胜を眮き換えたす

関数moveeventPointerEvent{
もしも 
isPanning ||
origX===未定矩||
origY===未定矩||
startClientX===未定矩||
startClientY===未定矩
{
戻る
}
addPointerポむンタ、むベント
const current = getMiddlepointers
ifpointers.length> 1{
//最初の2぀のポむンタ間の距離を䜿甚したす
//珟圚のスケヌルを決定する
//モバむルでのズヌムの問題を防ぐ
ifstartDistance === 0{
startDistance = getDistancepointers;
}
const diff = getDistancepointers-startDistance
const toScale = contrampScalediff * options.step/ 80 + startScale.scale
ZoomToPointtoScale、current
} そうしないず {
//モバむルズヌムの焊点゚ラヌを防ぐためにelse条件を远加したした
パン
origX +current.clientX --startClientX/ scale、
origY +current.clientY --startClientY/ scale、
{{
アニメヌトfalse
}
;
}
}

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡