46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
(function () {
|
|
var scrollTopButtons = document.querySelectorAll(".home-mobile-footer-top");
|
|
scrollTopButtons.forEach(function (button) {
|
|
button.addEventListener("click", function () {
|
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
});
|
|
});
|
|
|
|
// 页脚进入视口后,把悬浮按钮(下载 App / 回到顶部)顶到页脚上方,避免遮住页脚内容。
|
|
var footers = document.querySelectorAll(".footer-box, .home-mobile-footer");
|
|
if (!footers.length) return;
|
|
var root = document.documentElement;
|
|
var ticking = false;
|
|
var lastLift = -1;
|
|
|
|
function visibleFooter() {
|
|
for (var i = 0; i < footers.length; i++) {
|
|
if (footers[i].offsetHeight > 0) return footers[i];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function update() {
|
|
ticking = false;
|
|
var footer = visibleFooter();
|
|
var lift = 0;
|
|
if (footer) {
|
|
var top = footer.getBoundingClientRect().top;
|
|
lift = Math.max(0, Math.round((window.innerHeight || 0) - top));
|
|
}
|
|
if (lift === lastLift) return;
|
|
lastLift = lift;
|
|
root.style.setProperty("--footer-lift", lift + "px");
|
|
}
|
|
|
|
function schedule() {
|
|
if (ticking) return;
|
|
ticking = true;
|
|
window.requestAnimationFrame(update);
|
|
}
|
|
|
|
window.addEventListener("scroll", schedule, { passive: true });
|
|
window.addEventListener("resize", schedule);
|
|
schedule();
|
|
})();
|