You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面加载时使用jQuery实现水平导航自动滚动到.active激活链接

自动滚动到.active链接居中的实现方案

方案1:原生JavaScript实现(无第三方依赖)

直接在页面加载完成后执行以下代码即可,兼容所有现代浏览器:

window.addEventListener('load', function() {
  const slider = document.getElementById('boxSlider');
  const activeItem = slider.querySelector('a.active');
  if (!activeItem) return;
  
  // 用getBoundingClientRect计算更精准,不受父元素定位影响
  const sliderRect = slider.getBoundingClientRect();
  const activeRect = activeItem.getBoundingClientRect();
  const scrollLeft = slider.scrollLeft + activeRect.left - sliderRect.left - (sliderRect.width / 2) + (activeRect.width / 2);

  slider.scrollTo({
    left: scrollLeft,
    behavior: 'smooth' // 改为auto可实现瞬间滚动无动画
  });
});

方案2:jQuery实现(适配你现有调用逻辑)

先扩展jQuery的scrollCenter方法,再按你之前的逻辑调用即可:

// 扩展jQuery方法
$.fn.scrollCenter = function(activeSelector) {
  return this.each(function() {
    const $slider = $(this);
    const $active = $slider.find(activeSelector);
    if (!$active.length) return;
    
    const scrollLeft = $active.offset().left - $slider.offset().left - ($slider.width() / 2) + ($active.outerWidth() / 2) + $slider.scrollLeft();
    $slider.animate({ scrollLeft: scrollLeft }, 300); // 300为滚动动画时长,单位毫秒可自行调整
  });
};

// 页面加载完成后调用
$(document).ready(function() {
  $("#boxSlider").scrollCenter("a.active");
});

注意事项

  • 代码默认处理了不存在.active元素的场景,不会抛出异常
  • 原生实现的平滑滚动效果兼容所有支持Bootstrap5的浏览器,移动端触摸滚动逻辑不受影响
  • 如果不需要滚动动画,原生方案修改behavior参数为auto,jQuery方案将animate方法替换为$slider.scrollLeft(scrollLeft)即可

内容的提问来源于stack exchange,提问作者KJS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:57:03