To make it sticky I used the offsetParent, offsetTop and scrollY properties. I placed the button in a positioned element ( not sticky ) hid it with opacity so I can animate it and get the offsetParent ( does not work with display:none; ) and then used scrollY to change it’s opacity. I added a class ‘.sticky-facetwp’ to the button to target it.

The CSS

button.sticky-facetwp {
	opacity: 0;
	position: absolute;
	z-index: 99;
	color:#000 !important;
	transition-property: opacity;
	transition-duration: 1s;
	transition-delay: 0s;
}

.archive button.fixed-sticky-facetwp {
	opacity: 1;
	position: fixed;
}	

The JS


const page = document.querySelector('#content')

// get the filter button
const theFilter = document.querySelector('.sticky-facetwp')
const theFilterTop = theFilter.offsetTop

function stickyfacetwp() {
	if (window.scrollY >= theFilterTop) {
        theFilter.classList.add('fixed-sticky-facetwp');
      } else {
        theFilter.classList.remove('fixed-sticky-facetwp');
      }
}

window.addEventListener('scroll', stickyfacetwp)