loading="lazy"があると特定の位置までスクロールされない

loading="lazy"とは

imgタグでloading属性にlazyを指定すると画像近くまでスクロールするまで読み込まないことができる。(遅延読み込み)

IE11およびSafariでは使用できないが、Chrome、Edge、Firefoxなどではimgタグで使用できるので、現在は多くのWebサイトで実装されている。

https://caniuse.com/loading-lazy-attr

スムーススクロールが正しくできなくなる

imgタグにloading="lazy"を追加するだけで実装できるので便利だが、スムーススクロールが正しくできなくなるというデメリットがあるため使用する際は注意が必要。

例えば以下のリンク先のサンプルは「goto footer」のリンクをクリックすると途中にimgタグにloading="lazy"が指定されているものが複数あってfooterまでスムーススクロールさせるものだが、goto footerをクリックしてもfooterまでスムーススクロールされない。

スムーススクロールが正しくできないサンプル

画像の読み込みが正しく行われない

実際にサンプルを見ればわかると思うが、スムーススクロールだと画像の読み込みが行われていない。

原因はimgタグにwidthとheightが付いていないからだ。

loading="lazy"はimgタグにwidthとheightが付いていないと正常に動作しない。

imgタグにwidthとheightが付いていればloading="lazy"正常に機能するため、スムーススクロールも正しい動きになる。

スムーススクロールが正しくできるサンプル