即使最高值相同,JavasCript 函数也无法启动

标签 javascript html css styles

我有一个下拉菜单,当单击按钮时它会工作,它应该在打开时变为 top = 0 并且在关闭时变为 top = -50%,所以它保持隐藏在页面上方,但问题是我必须单击按钮两次,直到 JS 设置最高值,即使 CSS 样式中的最高值与脚本中规定的相同。

CSS:

 .sidenav {
 position: fixed;
 top: -50%;
 left: 0;
 height: 250px;
 display: flex;
 width: 100%;
 z-index: 1;
 background-color: white;
 overflow:hidden;
 transition: 0.3s;
 padding-top: 80px;
 box-shadow: 2px 4px 16px rgba(0, 0, 0, 0.3);
 }

HTML:

<div id="mySidenav" class="sidenav">
  <div class="itens">
    <a href="#">Program</a>
    <a href="#">Program</a>
    <a href="#">Program</a>
    <a href="#">Program</a>
  </div>
</div>

Javascript:

function toggleNav() {
    var element = document.getElementById("mySidenav");
        if (element.style.top == "-50%") {
            element.style.top = "0";
        } else {
            element.style.top = "-50%";
        }
}

最佳答案

那是因为您的元素没有 style.top 集。您的功能会在第一次点击时执行。您的 css 中的规则与 style.top 不同。所以只要给它一个初始值:

document.getElementById("mySidenav").style.top = '-50%';

function toggleNav() {
  var element = document.getElementById("mySidenav");
  if (element.style.top == "-50%") {
    element.style.top = "0";
  } else {
    element.style.top = "-50%";
  }
}

关于即使最高值相同,JavasCript 函数也无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835042/

相关文章:

javascript - 导入节点未作为异步添加到 DOM

javascript - 如何在一页上获得多个 slider ?

html - 下面的 Bootstrap 顺序和 col

css - 在不设置尺寸的情况下在 CSS 中裁剪图像

javascript - 在 btn 上运行 javascript,但不在容器上运行

javascript - 如何在 Firebase/angularFire 中按优先级重新排序子项

c# - 正确调整包含未知尺寸图像的 iframe 的大小

jquery - 如何自动点击我的图像 slider 的 'next' 箭头?

jquery - 删除 iframe 后将对象置于屏幕中心

css - 响应式 CSS 导航行为异常