如何使JQuery切换不移动元素?

时间:2018-10-18 15:45:41

标签: javascript jquery html css

我正在尝试制作一个响应式网站菜单,该菜单可以用一个汉堡包打开(3行)。

我已经打开菜单,但是为了让它腾出空间,它一直在上下移动汉堡。

如何制作它,以便您在打开菜单并播放动画的同时单击汉堡并将其保留在SAME PLACE中?

<div class="burger" id="burger" onclick="openBurger(this)">
    <div class="bar1"></div>
    <div class="bar2"></div>
    <div class="bar3"></div>
</center>

JS

function openBurger(x) {
    x.classList.toggle("change");
}

$("#burger").click(function() { 
$("#nav").toggle();
});

汉堡

enter image description here

如您所见,汉堡向下撞,为菜单留出空间。 enter image description here

谢谢。

2 个答案:

答案 0 :(得分:0)

function myFunction(x) {
    x.classList.toggle("change");
}
.container {
    display: inline-block;
    cursor: pointer;
}

.bar1, .bar2, .bar3 {
    width: 35px;
    height: 5px;
    background-color: #333;
    margin: 6px 0;
    transition: 0.4s;
}

.change .bar1 {
    -webkit-transform: rotate(-45deg) translate(-9px, 6px);
    transform: rotate(-45deg) translate(-9px, 6px);
}

.change .bar2 {opacity: 0;}

.change .bar3 {
    -webkit-transform: rotate(45deg) translate(-8px, -8px);
    transform: rotate(45deg) translate(-8px, -8px);
}
<div class="container" onclick="myFunction(this)">
  <div class="bar1"></div>
  <div class="bar2"></div>
  <div class="bar3"></div>
</div>

答案 1 :(得分:0)

您的汉堡菜单应独立于您的导航列表而生活。在此示例中,您可以将其包括在列表之前,并使用jQuery切换导航状态。

$("#burger").click(function() {
    var state = $("#nav").attr("class");
    $("#nav").attr("class", state == "show" ? "hide" : "show");
});
#burger { font-size: 32px; text-decoration: none; }
#nav { display: none; }
#nav.show { display: block; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a id="burger" href="#">☰</a>
<ul id="nav">
    <li><a class="bar1" href="#">Home</a></li>
    <li><a class="bar2" href="#">Work</a></li>
    <li><a class="bar3" href="#">Contact</a></li>
</ul>