2021・05・02
*リセットCSSを読み込ませた上でお試しください*(今回はなくて大丈夫です!)
Webページを開いた直後など、画面を下にスクロールさせる前はトップへ戻るボタンは必要ないので消しておき、少し画面を下にスクロールさせるとトップへ戻るボタンが出現する機能のサンプルです。JavaScriptを使っていますが jQuery は使用していません。また、いきなりパッと現れたり消えたりすると違和感が出るため、フワッと表示・非表示になるようにCSSで設定しています。
サンプル表示の都合上、実際は position:fixed; とすべきところを、relativeを使っています。コードをコピペする際はpositionプロパティの値にご注意下さい!
画像1
画像2
画像3
画像4
画像5
画像6
上記のサンプルコードを掲載しています。学習用としてご自由にコピペしてお使い下さい。(※スクロールできます)
HTML・CSS・JavaScript
<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
<meta charset="utf-8">
<style>
.sampletopscrollbox {
background-color: rgb(215, 215, 215);
width:70vw;
height:60vh;
margin: 16px auto;
overflow-y:scroll;
scroll-behavior: smooth;
}
.sampletopscrollarea {
height:1600px;
}
.samplegazou {
width:30%;
height:30vh;
margin: 20px auto;
position: relative;
}
.samplegazou p {
position: absolute;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
.samplehidaritop {
display: inline-block;
width:20px;
height:20px;
border-right:solid thin darkred;
transform: rotate(45deg);
}
.samplemigitop {
display: inline-block;
width:20px;
height:20px;
border-left:solid thin darkred;
transform: rotate(-45deg) translate(1.5px,1.5px);
}
.sampletopbutton {
background-color:rgb(247, 211, 246);
width:50px;
height:35px;
border-radius:50%;
cursor: pointer;
transition: all .6s;
}
.samplehidetop {
opacity: 0;
visibility: hidden;
transition: all .6s;
}
.chousei {
width: 70vw;
margin: 0 auto;
display: flex;
justify-content: flex-end;
position: relative;
bottom: 80px;
right: 40px;
}
</style>
</head>
<body>
<div id="sampletopscrollbox" class="sampletopscrollbox">
<div class="sampletopscrollarea">
<div class="samplegazou" style="background-color:pink">
<p>画像1</p>
</div>
<hr>
<div class="samplegazou" style="background-color:lightyellow">
<p>画像2</p>
</div>
<hr>
<div class="samplegazou" style="background-color:lightblue">
<p>画像3</p>
</div>
<hr>
<div class="samplegazou" style="background-color:lightgreen">
<p>画像4</p>
</div>
<hr>
<div class="samplegazou" style="background-color:white">
<p>画像5</p>
</div>
<hr>
<div class="samplegazou" style="background-color:tomato">
<p>画像6</p>
</div>
</div>
</div>
<div class="chousei">
<div id="sampletopbutton" class="sampletopbutton samplehidetop">
<span class="samplehidaritop"></span>
<span class="samplemigitop"></span>
</div>
</div>
<script type="text/javascript">
{ const eventTarget = document.getElementById('sampletopscrollbox');
const sampleScrollButton = document.getElementById('sampletopbutton');
eventTarget.addEventListener('scroll',function() {
let positionTop = 0;
positionTop = eventTarget.scrollTop;
if (positionTop > 250) {
sampleScrollButton.classList.remove('samplehidetop');
}
else {
sampleScrollButton.classList.add('samplehidetop');
}
});
sampleScrollButton.addEventListener('click',function() {
eventTarget.scrollTop = 0;
});
}
</script>
</body>
</html>