javascript - 如何切换侧边栏?

标签 javascript

我有一个滑动面板,我想将其隐藏在推送中。
现在我有两个链接,一个用于显示,另一个用于隐藏:

function openNav() {
  document.getElementById("mySidenav").style.width = "250px";
  document.getElementById("main").style.marginLeft = "250px";
}

function closeNav() {
  document.getElementById("mySidenav").style.width = "0";
  document.getElementById("main").style.marginLeft= "0";
}

我怎样才能在一个函数中做到这一点?

最佳答案

简短回答

下面是一种简单的方法,只需对代码进行最小的更改:

function toggleNav() {
  if (document.getElementById("mySidenav").style.width === "0") {
    document.getElementById("mySidenav").style.width = "250px";
    document.getElementById("main").style.marginLeft = "250px";
  } else {
    document.getElementById("mySidenav").style.width = "0";
    document.getElementById("main").style.marginLeft = "0";
  }
}



使用 CSS 的更好方法

这种方式会大大降低JS的复杂度。如果您将 nav-open 类附加到父容器(例如文档正文)。

JS

function toggleNav() {
    document.body.classList.toggle('nav-open');
}

CSS

.nav-open #mySidenav {
  width: 250px;
}

.nav-open #main {
  margin-left: 250px;
}

关于javascript - 如何切换侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60935362/

相关文章:

javascript - Knockout JS 脚本可以在 Chrome 中运行,但不能在 IE9 中运行

javascript - 如何拆分字符串对象然后连接并添加到数组

javascript - Protractor :步骤不一一执行

javascript - 让文本围绕可以由用户移动的对象流动

javascript - Flickr JSON 在 JavaScript 跨域中返回错误

javascript - 在 jQueryUI 可排序表之间移动一列,包括 th

javascript - 随着视口(viewport)高度降低,降低 div 内图像的高度?

javascript - For循环覆盖对象

javascript - 如何每 3 秒调用一个函数 15 秒?

javascript - 使用 ES6 解构的 if 语句中的评估顺序