前提
①のサイトを模写しています。トップに表示してある花の画像のようにスクロール時に画像が拡大する動作を実装したく、ネットで調べたところ②のサイトに行きつきました。しかし、②のサイトではコードがjQueryで書かれていたため、javascriptで実装するために試行錯誤していたのですが、詰まってしまったのでお知恵を拝借したく質問させていただきました。
①:https://code-step.com/demo/html/gallery/
②:https://nnc-studio.jp/plugin/2021/07/05/ani_size/
調べたこと
javascriptで実装するにあたりjQueryで使用されている各部分の意味を調べました。
ーーーーーーーー
$winH = $win.height()
ブラウザの表示領域の高さ
ーーーーーーーー
position = $connect.offset().top
document上にある拡大したい要素のY座標を取得
ーーーーーーーー
scroll = $win.scrollTop();
サイトの一番上からブラウザの表示領域がスクロールした距離
ーーーーーーーー
わからないこと
②のサイトのjQueryで以下の項目が分かりません。
ーーーーーーーー
scroll > position - $winH
if文が使用されているので、”もし scroll > position - $winH が成立した時”、ということはわかるのですが、scroll > position - $winHが具体的にどういう動きになるのかどうかがイマイチわかりません。
ーーーーーーーー
current = (1 - (position - scroll) / $winH) * 2;
こちらに関してはどうして1から(position - scroll) / $winH) を引くのか?どうして2をかけているのか?全く分かりません…
ーーーーーーーー
該当のソースコード
$('.p-jon__item').each(function(){ var $win = $(window), $winH = $win.height(), $connect = $(this), position = $connect.offset().top, current = 0, scroll; $win.on('load scroll', function(){ scroll = $win.scrollTop(); current = (1 - (position - scroll) / $winH) * 2; if (scroll > position - $winH) { $connect.css('transform', 'scale(' + current + ')'); } if (current > 1) { current = 1; } }); });

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/31 02:27
2022/08/31 03:53
2022/09/01 17:43