自身のポートフォリオサイト(1ページ)をつくっていて、ページ内リンクでスムーズスクロールするようにjQueryを使っています。
$('a[href^="#"]').click(function() {
let speed = 500;
let href = $(this).attr("href");
let target = $(href === "#" || href === "" ? 'html' : href);
let position = target.offset().top;
$('html, body').animate({scrollTop:position}, speed, 'swing');
return false;
});
ヘッダーを固定しているので、これだとヘッダーに隠れてしまいます。それ以外はうまく動作します。
そこで、よくあるコードで
$('a[href^="#"]').click(function() {
const headerHieght = $('header').height(); //ヘッダーの高さ取得
let speed = 500;
let href = $(this).attr("href");
let target = $(href === "#" || href === "" ? 'html' : href);
let position = target.offset().top - headerHieght;
$('html, body').animate({scrollTop:position}, speed, 'swing');
return false;
});
このように書きました。
しかしクリックした後、固定ヘッダーの高さを考慮してスクロールで移動してくれるのですが、その後すぐにスクロールされて、リンクの先頭がヘッダーに隠れてしまいます。
どうすればよいでしょうか?
回答3件
あなたの回答
tips
プレビュー