【发布时间】:2021-03-04 11:06:51
【问题描述】:
我的网页有一个粘性向上箭头图像,如下所示:
HTML:
<a href = "#navbar-scroll"><img src = "images/sticky-btn-light.png" id = "myBtn" alt = "sticky-up-button"></a>
还有 CSS:
#myBtn {
visibility: hidden;
position: fixed;
bottom: 50px;
right: 30px;
z-index: 99;
cursor: pointer;
padding: 15px;
border-radius: 10px;
width: 5%;
opacity: 0.5 ;
}
根据这个JS代码,当用户向下滚动时按钮消失,当用户向上滚动时出现。
window.onscroll = function(e) {
console.log(this.oldScroll > this.scrollY);
if((this.scrollY == 0) || (this.oldScroll < this.scrollY) ){
document.getElementById('myBtn').style.visibility = 'hidden';
}
else if(this.oldScroll > this.scrollY){
document.getElementById('myBtn').style.visibility = 'visible';
}
this.oldScroll = this.scrollY;
}
现在,我想根据按钮在屏幕上的变化位置来更改按钮的颜色。当我滚动页面时,粘性按钮将位于不同的部分,如下所示。 如果粘性按钮在 A 部分,它应该是红色的。如果它在 B 部分,它应该是蓝色的。 请注意,移动的是页面,而不是按钮。按钮处于固定位置。
为此,我需要粘性按钮在任何给定时刻重叠的部分的 ID。有什么方法可以通过 JavaScript 获取这些信息?
PS:我已经调整了细节以使事情更加清晰。这是正在移动的页面。那么,如果我将Element.getBoundingClientRect() 用于#myBtn,无论我在页面上滚动到哪里,我都不会得到相同的顶部/y 值吗?
【问题讨论】:
标签: javascript html css sticky sticky-footer