【问题标题】:Hide an element when scroll to specific class滚动到特定类时隐藏元素
【发布时间】:2022-01-12 19:31:49
【问题描述】:

我使用这个 JQuery 代码有一个粘性的“转到顶部”按钮:

//sticky back-to-top button
(function (t) {
  t(window).bind("scroll", function () {
    500 < t(this).scrollTop()
      ? t(".back-to-top").fadeIn(400)
      : t(".back-to-top").fadeOut(400);
  }),
    t(".back-to-top").click(function () {
      t("html, body").animate({ scrollTop: "0px" }, 500);
    });
})(jQuery);

此代码可以正常工作。 但我想当这个粘性按钮到达一个名为“go-top”的特定类时消失。对不起我的英语不好。

【问题讨论】:

  • 我不完全理解你的问题,但使用addClassremoveClass jquery 方法应该可以工作

标签: javascript html jquery


【解决方案1】:

您可以使用interception observer,这样当具有所述类的目标元素在视图中时,它会触发回调以隐藏按钮。

示例:代码可能不准确,但它旨在指明要遵循的方向。

let options = {
    root: document.querySelector('.go-top'),
    rootMargin: '0px',
    threshold: 1.0
 }
let prevRatio = 0.0;
let observer = new IntersectionObserver(callback, options);

let target = document.querySelector('#back-to-top-button');
observer.observe(target);

function handleIntersect(entries, observer) {
  entries.forEach((entry) => {
    if (entry.intersectionRatio > prevRatio) {
      entry.target.style.display = "none";
    } else {
      entry.target.style.backgroundColor = "block";
    }

    prevRatio = entry.intersectionRatio;
  });
}

告诉我进展如何...

您可以将root 切换为null,但这会使按钮在具有该类的元素在视口中时消失

【讨论】:

  • 感谢 shammahk,但我只想在返回顶部类到达顶部按钮时,返回顶部类将隐藏,然后当用户再次滚动到顶部时,它会显示出来。
  • 你能用你的代码制作一个沙箱,以便我可以使用它吗?如果可能的话,或者回购
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
相关资源
最近更新 更多