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

点击按钮切换左侧Navbar显隐时,右侧Navbar平滑左移动画实现问题

解决右侧Navbar平滑左移动画的问题

方案一:使用CSS过渡(推荐,性能更优)

这种方式依赖CSS的transition属性,比JS动画更流畅,也更易维护。

  1. 调整CSS样式:
/* 左侧Navbar基础样式,假设宽度为200px */
#navbar_left {
  position: fixed;
  left: 0;
  top: 0;
  width: 200px;
  height: 100vh;
  /* 添加滑入滑出过渡 */
  transition: transform 0.6s ease;
}

/* 隐藏左侧Navbar的类 */
#navbar_left.hidden {
  transform: translateX(-100%);
}

/* 右侧Navbar基础样式 */
#navbar_right {
  margin-left: 200px; /* 让出左侧Navbar的宽度 */
  width: calc(100% - 200px);
  /* 添加margin-left的过渡动画 */
  transition: margin-left 0.6s ease;
}

/* 左侧隐藏时,右侧占满宽度 */
#navbar_right.full-width {
  margin-left: 0;
  width: 100%;
}
  1. 修改jQuery代码:
$(document).ready(function(){
  $("#mapfliter").click(function(){
    // 切换左侧Navbar的隐藏类
    $("#navbar_left").toggleClass("hidden");
    // 同步切换右侧Navbar的宽度类
    $("#navbar_right").toggleClass("full-width");
  });
});

方案二:使用jQuery动画配合toggle slide

如果你想继续使用jQuery UI的toggle("slide")功能,可以在左侧动画完成后,用animate()方法驱动右侧的平滑移动:

$(document).ready(function(){
  $("#mapfliter").click(function(){
    const leftNav = $("#navbar_left");
    const rightNav = $("#navbar_right");
    // 获取左侧Navbar的宽度
    const leftWidth = leftNav.outerWidth();

    // 执行左侧的slide动画,完成后处理右侧
    leftNav.toggle("slide", {direction: "left"}, 'slow', function(){
      if(leftNav.is(":visible")){
        // 左侧显示时,右侧移回原位置
        rightNav.animate({
          marginLeft: leftWidth
        }, 'slow');
      } else {
        // 左侧隐藏时,右侧移到屏幕左边缘
        rightNav.animate({
          marginLeft: 0
        }, 'slow');
      }
    });
  });
});

注意:该方案需要确保已引入jQuery UI库(toggle("slide")是jQuery UI提供的方法)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:24:28