应用功能要求

外贸独立站时,经常会用到点击按钮/链接跳转到当前页面对应的段落,并且可以实现顶部部分偏移,以防被悬停的页眉挡住,这种就是点击平滑滚动的应用。

通常是指Smooth scroll,Smooth scroll time (500ms)滚动过渡,Smooth scroll offset (150px)顶部偏移。

代码片段

以下是一段通用代码


document.addEventListener('DOMContentLoaded', function() {
var bannerLinks = document.querySelectorAll('.wd-promo-banner-link');

bannerLinks.forEach(function(bannerLink) {
bannerLink.addEventListener('click', function(event) {
event.preventDefault();
var targetId = this.getAttribute('href').slice(1); // 获取跳转目标的ID
var targetElement = document.getElementById(targetId);
var offsetTop = targetElement.offsetTop - 150;
smoothScrollTo(0, offsetTop, 500);
});
});

function smoothScrollTo(x, y, duration) {
var start = window.scrollY || window.pageYOffset;
var change = y - start;
var startTime = performance.now();

function easeInOutQuad(t, b, c, d) {
t /= d / 2;
if (t < 1) return c / 2 * t * t + b;
t--;
return -c / 2 * (t * (t - 2) - 1) + b;
}

function animateScroll() {
var currentTime = performance.now();
var elapsedTime = currentTime - startTime;
window.scroll(0, easeInOutQuad(elapsedTime, start, change, duration));
if (elapsedTime < duration) {
requestAnimationFrame(animateScroll);
} else {
window.scroll(0, y);
}
}

animateScroll();
}
});

你可以添加到独立站任意页面,在当前页面实现平滑滚动效果。

这样,您可以为任何具有类名Class为 .wd-promo-banner-link 的元素添加链接,并且它们会在点击时平滑滚动到对应的ID。请注意修改对应的Class。