JSFiddle - React, Tailwind, and code Playground
by merindema
HTML
<a class="back_to_top" title="Наверх">↑</a>
<div class="matrix">
<script>
for (var i = 0; i < 4000; i++) document.writeln(i)
</script>
</div>
CSS
.back_to_top {
position: fixed;
bottom: 80px;
right: 40px;
z-index: 9999;
width: 30px;
height: 30px;
text-align: center;
line-height: 30px;
background: #f5f5f5;
color: #444;
cursor: pointer;
border-radius: 2px;
display: none;
}
.back_to_top:hover {
background: #e9ebec;
}
.back_to_top-show {
display: block;
}
JavaScript
(function() {
'use strict';
function trackScroll() {
var scrolled = window.pageYOffset;
var coords = document.documentElement.clientHeight;
if (scrolled > coords) {
goTopBtn.classList.add('back_to_top-show');
}
if (scrolled < coords) {
goTopBtn.classList.remove('back_to_top-show');
}
}
function backToTop() {
if (window.pageYOffset > 0) {
window.scrollBy(0, -80);
setTimeout(backToTop, 0);
}
}
var goTopBtn = document.querySelector('.back_to_top');
window.addEventListener('scroll', trackScroll);
goTopBtn.addEventListener('click', backToTop);
})();