javascript - 试图让移动菜单架工作

标签 javascript jquery

我正在尝试让一个简单的移动导航正常工作,但是当我点击触发按钮时没有任何反应。任何帮助将非常感激!我在 JS 中的第一步,所以如果我犯了一个非常愚蠢的错误,我深表歉意...

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <script  src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <title>Mobile Menu</title>    
    <script>
        // When trigger is clicked, check if menu is currently hidden or shown
        // Choose what action to perform

        $('#trigger').click( function() {
            if ($('#menu').hasClass('menu-hide')) {
                showMenu();
            }
            else {
                hideMenu();
            }
        });

        function showMenu() {
            $('#menu').removeClass('menu-hide').addClass('menu-show');
        }

        function hideMenu() {
            $('#menu').removeClass('menu-show').addClass('menu-hide');
        }    
    </script>

    <style>  
        #menu {
            position: fixed;
            top: 0px;
            left: -200px;
            width: 200px;
            height: 100vh;
            transition: left 0.2s ease-in-out;
            background-color: #484848;
        }

        .menu-show {
            left: 0px;
        } 

        #trigger {
            position: absolute; 
            top: 0;
            right: 0;
            cursor: pointer;
            width: 50px;
            height: 50px;
            background-color: red;
        }
    </style>
</head> 
<body>
    <div id="trigger"></div>
    <div id="menu" class="menu-hide"></div>    
</body>

谢谢 安德烈亚斯

最佳答案

首先,主要代码必须在 ready 函数中才能触发:

“$(文档).ready(函数(){}”

其次,为了使 CSS 起作用,您必须将左侧样式移动到菜单隐藏

工作示例:

$(document).ready(function() {

  $('#trigger').click(function() {
    if ($('#menu').hasClass('menu-hide')) {
      showMenu();
    } else {
      hideMenu();
    }
  });
});

function showMenu() {
  $('#menu').removeClass('menu-hide').addClass('menu-show');
}

function hideMenu() {
  $('#menu').removeClass('menu-show').addClass('menu-hide');
}
#menu {
  position: fixed;
  top: 0px;
  width: 200px;
  height: 100vh;
  transition: left 0.2s ease-in-out;
  background-color: #484848;
}
.menu-show {
  left: 0px;
}
.menu-hide {
  left: -200px;
}
#trigger {
  position: absolute;
  top: 0;
  right: 0;
  cursor: pointer;
  width: 50px;
  height: 50px;
  background-color: red;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <title>Mobile Menu</title>
  </head>
  <body>
    <div id="trigger"></div>
    <div id="menu" class="menu-hide"></div>
  </body>
</html>

关于javascript - 试图让移动菜单架工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254014/

相关文章:

javascript - ValidationPipe() 不适用于 Nestjs/Crud 中的重写 @Query

javascript - 如何从其他 Controller 调用$http.post?

php - 获取提交数据的 id 返回 NaN

javascript - 禁用 jQuery UI 日期选择器中的特定日期

javascript - jQuery CSS 渲染 - 适用于 Firefox,不适用于 Chrome

javascript - Google 协作平台列表项

javascript - 为什么不将 Javascript 事件委托(delegate)发挥到极致呢?

javascript - 计算器输入和输出字段集

javascript - polymer this 指针

javascript - 水平滚动到 anchor