为什么我改造后的汉堡包菜单关闭按钮不均匀?
Why is my transformed hamburger menu close button uneven?
我正在尝试创建一个汉堡菜单,在您单击它之后,它会变成一个关闭 ("X") 按钮。所以我把这个HTML放在一起作为汉堡菜单
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<nav>
<a href='#'>Vote</a>
<a href='#'>Search</a>
<a href='#'>Contact</a>
</nav>
</div>
和这些样式
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1, .bar2, .bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 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);
}
但是,当我单击该按钮时,"X" 似乎在右侧被截断了 -- https://jsfiddle.net/8jvrrcqq/3/。怎样才能让X左右两边都均匀?
您的 transform: translate
金额需要调整。我已经在下面调整了它们;随时根据需要进行更多调整。
$('.close-btn').click(function() {
$('.responsive-menu').removeClass('expand')
$('.menu-btn').removeClass('btn-none')
})
$('.menuContainer').click(function() {
$(this).toggleClass('change');
$('nav').toggleClass('nav-open');
});
#mobile-nav {
display: block;
}
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1,
.bar2,
.bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 0;
transition: 0.4s;
}
.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-5px, 6px);
transform: rotate(-45deg) translate(-8px, 4px);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-9px, -5px);
}
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<nav>
<a href='#'>Vote</a>
<a href='#'>Search</a>
<a href='#'>Contact</a>
</nav>
</div>
您只需要稍微调整一下翻译值。还要考虑您可以使用 translateY
和 rotateZ
,因为您只关心动画的这些方向。
$('.close-btn').click(function() {
$('.responsive-menu').removeClass('expand')
$('.menu-btn').removeClass('btn-none')
})
$('.menuContainer').click(function() {
$(this).toggleClass('change');
$('nav').toggleClass('nav-open');
});
#mobile-nav {
display: block;
}
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1,
.bar2,
.bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 0;
transition: 0.4s;
}
.change .bar1 {
transform: translateY(9px) rotateZ(45deg);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
transform: translateY(-9px) rotateZ(-45deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</div>
我正在尝试创建一个汉堡菜单,在您单击它之后,它会变成一个关闭 ("X") 按钮。所以我把这个HTML放在一起作为汉堡菜单
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<nav>
<a href='#'>Vote</a>
<a href='#'>Search</a>
<a href='#'>Contact</a>
</nav>
</div>
和这些样式
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1, .bar2, .bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 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);
}
但是,当我单击该按钮时,"X" 似乎在右侧被截断了 -- https://jsfiddle.net/8jvrrcqq/3/。怎样才能让X左右两边都均匀?
您的 transform: translate
金额需要调整。我已经在下面调整了它们;随时根据需要进行更多调整。
$('.close-btn').click(function() {
$('.responsive-menu').removeClass('expand')
$('.menu-btn').removeClass('btn-none')
})
$('.menuContainer').click(function() {
$(this).toggleClass('change');
$('nav').toggleClass('nav-open');
});
#mobile-nav {
display: block;
}
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1,
.bar2,
.bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 0;
transition: 0.4s;
}
.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-5px, 6px);
transform: rotate(-45deg) translate(-8px, 4px);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-9px, -5px);
}
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
<nav>
<a href='#'>Vote</a>
<a href='#'>Search</a>
<a href='#'>Contact</a>
</nav>
</div>
您只需要稍微调整一下翻译值。还要考虑您可以使用 translateY
和 rotateZ
,因为您只关心动画的这些方向。
$('.close-btn').click(function() {
$('.responsive-menu').removeClass('expand')
$('.menu-btn').removeClass('btn-none')
})
$('.menuContainer').click(function() {
$(this).toggleClass('change');
$('nav').toggleClass('nav-open');
});
#mobile-nav {
display: block;
}
.menuContainer {
display: inline-block;
cursor: pointer;
}
.bar1,
.bar2,
.bar3 {
width: 25px;
height: 4px;
background-color: #333;
margin: 5px 0;
transition: 0.4s;
}
.change .bar1 {
transform: translateY(9px) rotateZ(45deg);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
transform: translateY(-9px) rotateZ(-45deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mobile-nav">
<div class="menuContainer">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</div>