すみません、自己解決しました。
原因:スムーススクロールのjsとmailgoが競合しました。
解決策:スムーススクロールの内容を変更したらどちらも動作しました。
<詳細>
●最初に使っていたスムーススクロールとmailgoの組み合わせ
<script src="https://unpkg.com/mailgo@0.6.7/dist/mailgo.min.js"></script>
<script>
$(function(){
// 全てのアンカータグを対象にする
$('a').click(function(e){
var anchor = $(this),
href = anchor.attr('href'),
pagename = window.location.href;
// 現在のurlのハッシュ以降を削除
pagename = pagename.replace(/#.*/,'');
// リンク先のurlから現在の表示中のurlを削除
href = href.replace( pagename , '' );
if( href.search(/^#/) >= 0 ){
// 整形したリンクがページ内リンクの場合はページ無いスクロールの対象とする
// 通常の遷移処理をキャンセル
e.preventDefault();
var speed = 500;
// 前段階で整形したhrefを使用する
// var href= $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var position = target.offset().top;
$("html, body").animate({scrollTop:position}, speed, "swing");
// ロケーションバーの内容を書き換え
location.hash = href ;
return false;
}
});
});
</script>
上記でmailgoがうまくいきませんでした。
●動作確認できたスムーススクロールとmailgoの組み合わせ
<script src="https://unpkg.com/mailgo@0.6.7/dist/mailgo.min.js"></script>
<script>
document.addEventListener("click", e => {
const target = e.target;
// clickした要素がclass属性、js-smooth-scrollを含まない場合は処理を中断
if (!target.classList.contains("js-smooth-scroll")) return;
e.preventDefault();
const targetId = target.hash;
const targetElement = document.querySelector(targetId);
// 画面上部から要素までの距離
const rectTop = targetElement.getBoundingClientRect().top;
// 現在のスクロール距離
const offsetTop = window.pageYOffset;
// スクロール位置に持たせるバッファ
const buffer = 50;
const top = rectTop + offsetTop - buffer;
window.scrollTo({
top,
behavior: "smooth"
});
});
</script>