<p style ="margin-bottom:100px;" > Scroll this page.</p >
<div class ="sticky" >
<h3 > Super amazing header</h3 >
</div >
<p style ="margin-top:500px;" > Still there?</p >
<p style ="margin-top:500px;" > Yep!</p >
<p style ="margin-top:500px;" > Scroll so hard!</p >
body {
margin : 0 ;
text-align : center ;
font-family : sans-serif ;
}
.fixed {
position : fixed ;
top : 0 ;
}
.sticky {
width : 100 % ;
background : #f6d565 ;
padding : 25 px 0 ;
text-transform : uppercase ;
}
const sticky = document.querySelector(".sticky" );
const origOffsetY = sticky.offsetTop;
function onScroll () {
sticky.classList.toggle("fixed" , window.scrollY >= origOffsetY);
}
document.addEventListener("scroll" , onScroll);
<div class ="wrap" > </div >
<div class ="pin" > hello</div >
* {
margin : 0 ;
padding : 0 ;
}
.wrap {
height : calc(100 vh + 100 px) ;
background-color : pink ;
}
.pin {
width : 100 % ;
height : 50 px ;
position : fixed ;
top : -50 px ;
left : 0 ;
transition : .3 s all ;
transform : translateZ(0 ) ;
background-color : rgba(0 , 0 , 0 , .5 ) ;
visibility : hidden ;
}
.pin .show {
top : 0 ;
visibility : visible ;
}
const pin = document.querySelector('.pin' );
function onScroll () {
const scrollY = window.scrollY;
pin.classList.toggle('show' , scrollY >= 50 );
}
window.addEventListener('scroll' , onScroll);