【发布时间】:2015-01-21 16:12:45
【问题描述】:
我有一个菜单,当我点击一个 btn 时它会滑出,这很好,但现在我想按其他任何地方来隐藏菜单,而不仅仅是按同一个 btn。
// menu
$('.toggle').click(function(event) {
event.preventDefault();
$('.self').toggleClass('show-m');
$('.toggle').toggleClass('show-t');
$('.content').toggleClass('move-co');
});
/*
$('#s-form').submit(function(event) {
if (!$('#search').val()) {
event.preventDefault();
} else {
$.pjax.submit(event, '#result');
}
});
*/
*{
outline: none !important;
box-sizing: border-box;
transition: all 0.3s ease-in-out;
}
li {
list-style: none;
}
.content{
padding: 100px 0;
}
/* menu */
/* toggle */
.menu .toggle {
padding: 10px;
position: fixed;
top: 20px;
left: 0;
z-index: 10;
background: #111;
color: #fff;
border: none;
}
.show-t {
transform: translate(300px,0);
}
/* menu self */
.menu .self {
width: 300px;
padding: 15px;
position: fixed;
top: 0;
bottom: 0;
left: -310px;
z-index: 20;
text-align: center;
background: white;
box-shadow: 2px 0 10px 0 rgba(0,0,0,0.5);
}
.show-m {
left: 0 !important;
}
.menu .self ul {
padding: 0;
}
.menu .self ul li {
padding: 10px 0;
margin: 10px 0;
text-align: center;
background: #ecf0f1;
}
.menu .self li a {
width: 100%;
display: inline-block;
color: #95a5a6;
}
.move-co {
transform: translate(250px,0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu">
<button type="button" class="toggle">Menu</button>
<nav class="self">
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</nav>
</div>
<section class="content">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab, ex, nihil! Recusandae porro sit facere architecto, optio id quis odio qui similique reiciendis dolor, saepe assumenda placeat voluptatem iusto sunt!
</p>
</section>
编辑:
对于那些投反对票并竞选的人,有一个神奇的按钮调用add a comment,你可以用它来表达一个解决方案:)。
【问题讨论】:
-
@RoryMcCrossan 是的,它在 css 中,那么如何在第一个函数完成后才运行第二个函数?
-
您可以挂钩到
transitioned事件。但是,我没有看到在彼此之上添加更多点击处理程序的意义。你到底想达到什么目的? -
@RoryMcCrossan 正如我已经说过的,我想点击其他任何地方来隐藏菜单,而不仅仅是
.togglebtn