所以我正在我的网站上制作一个滑出菜单。单击时它会滑出,但是如何设置它以便在再次单击时滑回?
现在非常简单的源代码:
$(document).ready(function() {
$("#menuicon").click(function() {
$("nav ul, .content").animate({left: "-15%"}, 1000);
});
});
提前致谢!
所以我正在我的网站上制作一个滑出菜单。单击时它会滑出,但是如何设置它以便在再次单击时滑回?
现在非常简单的源代码:
$(document).ready(function() {
$("#menuicon").click(function() {
$("nav ul, .content").animate({left: "-15%"}, 1000);
});
});
提前致谢!
您也许可以只使用 toggle() 函数来代替单击,但我不是切换的忠实粉丝。下面的解决方案也包含一个类,但这就是我的做法:
$(document).ready(function() {
$("#menuicon").click(function(e) {
var menuicon = $(e.target);
if (!menuicon.hasClass('open'){
menuicon.addClass('open');
$("nav ul, .content").animate({left: "-15%"}, 1000);
} else {
menuicon.removeClass('open');
$("nav ul, .content").animate({left: "0"}, 1000);
}
});
});
我还会在那里合并一个“工作”类以防止双击,但这可能超出您的项目所需。
编辑:
我经常使用的一点额外花絮,如果您有复杂的菜单选项,其中涉及一些不同的对象(例如锚点,内部带有 img 和 span,或其中的一些其他元素),您可以将 e.target 与jquery 'closest()' 函数以确保您始终选择锚点而不是其子项之一。
var clicked = $(e.target).closest('a');
如果您还尝试从单击的对象中获取任何属性值,这将非常有用,使用它您可以确定您的选择将始终是“a”(而不是 e.target 返回子 img 或其他内容),你可以从那里工作。
演示http://jsfiddle.net/yeyene/TLtqe/1/
$('a').on('click',function() {
if($('#website').css('left')=='0px'){
$('#website').animate({left: '-30%'}, 1000);
}else{
$('#website').animate({left:0}, 1000);
}
});
改用jquery slidetoggle!例如,$(document).ready(function() { $("#menuicon").click(function() { $("nav ul, .content").slideToggle(1000); }); });
而不是动画!
你不能用这样的东西吗?
$(document).ready(function() {
$(".nav_button").click(function () {
$(".top.mini_nav").slideToggle();
});
});
我在这里使用这个-> DEMO
这是我用于那个按钮的 CSS
.top.mini_nav {
display: none;
top: 20px;
left: 20px;
margin-bottom: 60px;
position: relative;
}
.top.mini_nav a:hover {
background-color: #F8F8F8;
}
.nav_button {
position: relative;
width: 40px;
height: 40px;
left: 40px;
display: block;
color: white;
background-color: #2898F2;
font-size: 20px;
font-weight: bold;
text-align: center;
line-height: 39px;
cursor: pointer;
top: 20px;
border-radius: 5px;
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
.nav_button:hover {
background-color: #D0A624;
}
你可能会想要一些更干净的东西——但到目前为止这对我来说效果很好。
我意识到我只需要创建一个变量,根据它是否打开来将其设置为真/假。
var open = false;
$(document).ready(function() {
$("#menuicon").click (function() {
if (!open){
$(".content, nav ul").animate({left: "-=15%"}, 1000);
open = true;
} else {
$(".content, nav ul").animate({left: "+=15%"}, 1000);
open = false;
}
});
});
感谢所有的帮助家伙!