Skip to content

Instantly share code, notes, and snippets.

@IgorGavrilenko
Last active March 20, 2024 11:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IgorGavrilenko/20eb3929ced208a78c3f7d0ec6c4c86d to your computer and use it in GitHub Desktop.
Save IgorGavrilenko/20eb3929ced208a78c3f7d0ec6c4c86d to your computer and use it in GitHub Desktop.
topButton
// btnTop
function btnTop() {
const rootElement = document.documentElement;
const scrollToTopBtn = document.querySelector('.scroll-top');
function handleScroll() {
let scrollTotal = rootElement.scrollHeight - rootElement.clientHeight;
if ((rootElement.scrollTop / scrollTotal) > .5) {
scrollToTopBtn.classList.add('scroll-top--show');
} else {
scrollToTopBtn.classList.remove('scroll-top--show');
}
}
function scrollToTop() {
rootElement.scrollTo({
top: 0,
behavior: 'smooth'
})
}
document.addEventListener('scroll', handleScroll);
scrollToTopBtn.addEventListener('click', scrollToTop);
}
btnTop();
//scrol to element
Object.entries(document.querySelectorAll('[href^="#"]'))
.forEach(([ index, node ]) => {
node.addEventListener('click', (event) => {
event.preventDefault();
window.scrollTo({
top: document.querySelector(event.currentTarget.getAttribute('href')).getBoundingClientRect().top - 50,
behavior: 'smooth'
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment