Labo: Web 9FreeScroll 画像を拡大縮小とスワイプ!
2018/12/5
これまでスクロール系の機能をいくつか制作してきましたが、ズームも欲しくなったので、マウススクロールで拡大縮小・スワイプで移動の画像ビュアーのようなもの?を作りました。
マウスホイールで拡大縮小。ブラウザより大きくなったらスワイプして移動できます。PCオンリーです。スマホには対応してません、マウスホイールが使えないので当然ですが。というかスマホには必要ないですけどね。
さて、拡大縮小する方法にはいくつかありまして、
- 1. 背景画像にしてbackground-size を使用。
- 2. imgタグを使用してwidth、height を%で拡大縮小
- 3. transform の scale を使用。
- 4. transform3D のtranslate Z軸を使用。近づくと大きく遠ざかると小さく見える遠近感を利用。
このサンプルでは3番目のtransform scale を使用しています。
ただし注意しないといけないのは、transform scale はその名の通り拡大するだけなので解像度は同じままなんですね。つまり最初の横幅が100px だとすると10倍に拡大しても100pxのまま拡大されます。
なので、デフォルトの時点でいったん最大まで拡大した画像を10%程度に縮小しています。
このサンプルも見た目は横幅700pxに見えても実は4000px位あるんですよ。バーチャルRetinaですね(笑)
本当は拡大縮小の原点もマウス座標でやりたいんですが、うまくいきません。
すよ。
CSSのtransform の場合、座標の原点が画像の左上にあり、マウス座標を取得しているブラウザの原点とずれている点と、拡大縮小するたびに座標も拡大縮小される2点が大きな原因なんですね。
拡大縮小のたびにずれが変化してズームのオリジナル座標がぶれまくるんですね。
なので現在研究中です。
freeScroll←サンプルです
