侧边栏在最小化时向右推送内容,在最大化时保持不变

Sidebar pushes content right when minimized, sticks when maximized

我对前端非常非常陌生(我已经做了一个星期了)

我目前有一些 JS/React 和 CSS 代码可以制作一个基本的网站。一切正常,我已经修复了除一个错误之外的所有错误:

全屏时,侧边栏自动打开。我真的不在乎它是否存在(如果不是,我的问题可能会得到解决),但它确实存在。当我最小化时,边栏会折叠并正常打开。主页内容和顶部导航栏使用JQuery向右推。但是,如果我让侧边栏保持打开状态并最大化屏幕,内容会保持向右推,因为侧边栏在较大的屏幕上保持打开状态。

我不知道你需要看什么才能帮助我,所以我会 post 边栏 JS 和 CSS 以及 App.js JQuery代码。

App.js

  const [sidebarOpen, setsidebarOpen] = useState(false);
  const openSidebar = () => {
    setsidebarOpen(true);
    $('.main__container').toggleClass("open");
    $('.navbar').toggleClass("open");
    $('.navbar__left').toggleClass("open");
  };
  const closeSidebar = () => {
    setsidebarOpen(false);
    $('.main__container').toggleClass("open");
    $('.navbar').toggleClass("open");
    $('.navbar__left').toggleClass("open");
  };

我确实尝试在上面做一个 if/else ^,比如如果侧边栏已经打开并且您尝试再次打开,然后切换两次,但那没有用。

sidebar.js

const Sidebar = ({sidebarOpen, closeSidebar}) => {
   
    return (
        <div className={sidebarOpen ? "sidebar_responsive" : ""} id="sidebar">
            <div className="sidebar__title">
                <div className="sidebar__img">
                    <img src={logo} alt="logo" />
                </div>
                <div className="sidebar__he">
                    <h1>name <br></br> stuff</h1>
                </div>
                <i
                onClick={() => closeSidebar()}
                className="fa fa-times"
                id="sidebarIcon"
                aria-hidden="true"
                ></i>
            </div>
    **menu items**

sidebar.css

#sidebar {
    background: #263f8e;
    grid-area: sidebar;
    overflow-y: auto;
    padding: 20px;
    -webkit-transition: all 0.5s;
    transition: all 0.5s;
    height: 100vh;
  }
  
  
  .sidebar__menu > h2 {
    color: #69BF87;
    font-size: 16px;
    margin-top: 15px;
    margin-bottom: 5px;
    padding: 0 10px;
    font-weight: 700;
  }
  

  .sidebar_responsive {
    display: inline !important;
    z-index: 9999 !important;
    left: 0 !important;
    position: absolute;
    
  }
  
  @media only screen and (max-width: 978px) {
    #sidebar {
      display: none;
    }
  
    .sidebar__title > i {
      display: inline;
    }
  }

我只包含了我认为可能有帮助的内容^^

小编辑:如果我让侧边栏显示 = None,那么它会在没有侧边栏的情况下加载它。如果我最小化,打开侧边栏,然后最大化,侧边栏会保留。我感觉我在兜圈子!

小编辑 2:这有效 $(window).resize(function(){window.location.reload();});但不是很顺利,宁愿有更好的解决方案:)

似乎大多数(如果不是全部)网站在调整大小时都会刷新屏幕。我添加了这一行:

$(window).resize(function(){window.location.reload();}); 

它会按预期刷新。它比常规网站慢一点,但我认为那是因为我正在使用 NPM。我要说这是解决方案,因为它是标准的。