滚动到当前屏加上active类名,配合页面动画使用

window.addEventListener('scroll', this.handleScroll);
let self = this;

// resize  重置当前视口页面
window.onresize = function () {
    self.totalHeight = 0;
    self.boundHeight = [0];
    self.oldClassList = [];
    self.getHeightAndOldClassList();
}

// 滚动给对应的屏增加类名
let totalHeight = 0;  // 区间边界值
let boundHeight = [0];// 每个page高度区间数组
let oldClassList = [];// 最初每个容器的初始类名
handleScroll = () => {
    const page = document.getElementsByTagName("page");
    let scrollTop = document.body.scrollTop;//滚动距离
    for (let i = 0; i < page.length; i++) {
        if (scrollTop < (this.boundHeight[i + 1]) && scrollTop > (this.boundHeight[i])) {
            page[i].className = `${this.oldClassList[i]} active`;
        } else {
            page[i].className = this.oldClassList[i];
        }
    }
};

getHeightAndOldClassList = () => {
    const page = document.getElementsByClassName("page");
    for (let i = 0; i < page.length; i++) {
        this.totalHeight = 0;
        this.oldClassList.push(page[i].className.split('active')[0]);
        for (let j = 0; j <= i; j++) {
            if (page[j]) {
                this.totalHeight += page[j].clientHeight;
            }
        }
        this.boundHeight.push(this.totalHeight);
    }
}
复制代码

转载于:https://juejin.im/post/5c8236b8f265da2dca389269

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值