https://ss-complex.com/work_top_back_button/
上記ページのフッター手前で止まるボタンについてですが、
コードを使用すると、PCであれば問題ない挙動なのですが、スマホで下にスクロールしていくとフッターの要素と少し被った状態に一瞬なってからフッターの上に表示されるという不自然な動きになります。
原因としてはブラウザのアドレスバーが表示されている影響で不自然な動きになります。
具体的な原因としては下にスクロールしていくと、ブラウザのアドレスバーは非表示になるのですが、$(window).height() で取得している高さが、アドレスバーが表示されている状態の高さを取得しているため
フッターにボタンが少し被った状態に一瞬なります。
なので、下にスクロールしていくときにアドレスバーが非表示になるので、アドレスバーが非表示の状態の高さを$(window).height()で取得できれば問題なく表示されます。
ただ、逆にフッター部分までスクロール後上にスクロールする時は、アドレスバーが表示されるので上に戻る時はアドレスバーが表示された状態の高さを取得できるようにしたいとゆう状況です。
上述の処置をJQueryで一番簡単にできる方法はありますでしょうか。
お知恵をお貸しいただけますと幸いです。
宜しくお願いいたします。
<既存のソースコード>
scrollHeight = $(document).height(); //ドキュメントの高さ
scrollPosition = $(window).height() + $(window).scrollTop(); //現在地
footHeight = $("footer").innerHeight(); //footerの高さ(=止めたい位置)
if ( scrollHeight - scrollPosition <= footHeight ) { //ドキュメントの高さと現在地の差がfooterの高さ以下になったら
$("#topBtn").css({
"position":"absolute", //pisitionをabsolute(親:wrapperからの絶対値)に変更
"bottom": footHeight + 20 //下からfooterの高さ + 20px上げた位置に配置
});
} else { //それ以外の場合は
$("#topBtn").css({
"position":"fixed", //固定表示
"bottom": "20px" //下から20px上げた位置に
});
}
});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/02 17:46
2021/06/02 18:02
2021/06/02 19:15
2021/06/03 00:51
2021/06/03 00:59
2021/06/03 03:03