$(function() {
var menuVisible = false;
$('.menuBtn').click(function() {
if (menuVisible) {
$('.myMenu').css({'display':'none'});
menuVisible = false;
return;
}
$('.myMenu').css({'display':'block'});
menuVisible = true;
});
$('.myMenu').click(function() {
$(this).css({'display':'none'});
menuVisible = false;
});
$(document).on('click',function(e){
// if the click is made any where on body except .menuBtn element
// then hide the menubar
if($(e.target).closest('.menuBtn').length === 0){
$('.myMenu').css({'display':'none'});
menuVisible = false;
}
});
});
.menuBtn {
background-color: cornflowerblue;
font-size:1.1em;
padding:7px 15px;
display:inline-block;
margin: 7px;
border-radius:6px;
border:solid rgba(0,0,0,0.2);
border-width:1px 1px 5px;
box-shadow:0 5px 0 rgba(0,0,0,0.1),
inset 0 0 3px rgba(255,255,255,0.3);
cursor:pointer;
transition:0.4s ease;
}
.menuBtn:hover {
transform:translateY(-3px);
box-shadow:0 6px 0 rgba(0,0,0,0.1), inset 0 0 1px rgba(255,255,255,0.4);
border-bottom-width:8px; }
.menuBtn:active { transform:translateY(4px); box-shadow:0 2px 0 rgba(0,0,0,0.1), inset 0 0 5px rgba(255,255,255,0.4); border-bottom-width:2px; transition:0.1s ease; }
.wrapper {
position: relative;
display: inline-block;
}
.myMenu {
display: none;
position: absolute;
background-color: white;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.6);
}
.myMenu a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.myMenu a:hover {background-color: cornflowerblue; color: yellow;}
.wrapper:hover {
display: block;
}
.myMenu {
display: none;
}
.menuBtn:hover .menuBtn {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<button class="menuBtn"></button>
<div class="myMenu">
<a href="#">Login</a>
<a href="#">Register</a>
<a href="#">About Us</a>
<a href="#">About the Crate</a>
<a href="#">About Us</a>
</div>
</div>
のようなものでなければなりません
をお勧めします[.hide() '](http://api.jquery.com/hide/)と[' .show() ']を使って' .css({'display': 'none'}) (http://api.jquery.com/show/)。さらに、変数を使用する代わりに['.is'](http://api.jquery.com/is/)を使用して可視状態を記憶することができます。 [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)を覚えておいてください。 [こちらがきれいな方法です](http://kodeweave.sourceforge.net/editor/#1848385a0f60d64a6bb7d1f2e8f98dca)。 –
それは実際に印象的です、マイケル。私はそれを試していないが、私は行くつもりです。それははるかに少ないコードです。コードとwikiの両方をありがとう。 – lol2dubs