$(document).ready(function(){
$("#topBtn").hide();
$(window).on("scroll", function() {
if ($(this).scrollTop() > 100) {
$("#topBtn").fadeIn("fast");
} else {
$("#topBtn").fadeOut("fast");
}
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上げた位置に
});
}
});
$('#topBtn').click(function () {
$('body,html').animate({
scrollTop: 0
}, 400);
return false;
});
});
<div class="wrapper">
<header class="header" id="top">
<p>ヘッダー</p>
</header>
<div class="contents">
<p>ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br>
ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。<br><br></p>
</div>
<!--固定ボタン-->
<a href="#top" class="topBtn" id="topBtn">TOP</a><!--/固定ボタン-->
<footer class="footer">
<p>フッター</p>
</footer>
</div>
/*トップへ戻るボタン*/
.topBtn {
position:fixed; /*固定*/
bottom:20px; /*場所を右下に移動*/
right:20px; /*場所を右下に移動*/
display:block; /*aタグをblock要素に変更*/
background-color:rgba(0,0,0,0.5); /*以下、デザインはご自由に!!*/
color:#fff;
text-decoration:none;
font-weight:bold;
font-size:11px;
width:60px;
height:60px;
text-align:center;
line-height:22px;
border-radius:30px;
padding-top:30px;
box-sizing:border-box;
}
.topBtn:before {
content:'\25B2';
position:absolute;
top:10px;
left:0;
width:100%;
text-align:center;
font-size:20px;
}
.topBtn:hover {
opacity:0.7;
}
/*layout*/
.wrapper {
position:relative; /*topBtnの親要素に指定*/
}
body {
color:#333;
font-size:18px;
line-height:1.8em;
letter-spacing:0.05em;
}
.header {
height:40px;
line-height:40px;
text-align:center;
background-color:#eed;
}
.contents {
margin:40px 40px 60px 40px;
}
.footer {
height:200px;
line-height:200px;
text-align:center;
background-color:#eed;
}
External resources loaded into this fiddle: