为了账号安全,请及时绑定邮箱和手机立即绑定

当 id 到达浏览器视口的顶部时,在 JavaScript 中执行操作

当 id 到达浏览器视口的顶部时,在 JavaScript 中执行操作

江户川乱折腾 2022-06-05 10:29:06
我正在创建一个按钮,使用scrollIntoView()Javascript 中的函数将客户发送到 Woocommerce 中的评论字段。当评论部分进入视口时,我还在努力隐藏和显示按钮,并且它正在工作,但我想更进一步。浏览器底部点击 ID 时的按钮,这是我不想要的。我希望按钮在 ID 到达浏览器顶部时显示。这是基本的 HTML:<button onClick="scrollToComment()" id="scroll-btn">Leave a Review</button><div id="reviews">  //a bunch of reviews and comments go here  <div id="review_form"></div></div>这是JS:window.addEventListener('scroll', function() {    var element = document.querySelector('#reviews');    var position = element.getBoundingClientRect();    var scrollBtn = document.querySelector('#scroll-btn');     if(position.top < window.innerHeight && position.bottom >= 0) {        scrollBtn.style.display = 'block';    }    else {        scrollBtn.style.display = 'none';    }});function scrollToComment() {    var button = document.querySelector('#review_form');    button.scrollIntoView();}任何帮助,将不胜感激!
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

为什么不直接测试框架在顶部时的位置?


// if position.top is between -1 and 1 it means it's on top

// don't use '=== 0' to avoid pixel perfect glitches

if (position.top > -1 && position.top < 1) {

  scrollBtn.style.display = 'block';

}


查看完整回答
反对 回复 2022-06-05
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

使用IntersectionObserver

var observer = new IntersectionObserver(callback, options);


查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号