1
onblur를 사용하여 하위 메뉴를 닫으 려합니다. 하위 메뉴를 "숨기"위해 그것을 가지고 있지만, 그냥 그렇게합니다. 메뉴를 원래 상태로 되돌리려합니다. 나는 또한 메뉴에 타임 아웃을 설정하여 5-10 초 후에 닫을 것입니다.onblur 및 setTimeout을 사용하여 하위 메뉴 닫기
피씨 나는 이것을 위해 jsfiddle를 만들려고 노력했지만 기능이 없었다. 또한 모바일 사이트 용입니다.
HTML
<div class="smenu_div"">
<ul>
<li>
<a class="menu-title" href="#" onblur="hidemenu()" onclick="showsub()">Menu</a>
<ul id='hiddenMenu'>
<li><a href="/mobile/m.index.html">Home</a></li>
<li><a href="m.trucks.html">Trucks</a></li>
<li><a href="m.equipment.hmtl">Equipment</a></li>
</ul>
</li>
</ul>
</div>
CSS
.smenu_div ul
{
padding:0px;
margin-top:5px;
margin-right:40px;
font-family:georgia;
font-size:70px;
color:#ffffff;
list-style:none;
text-indent:15px;
text-align:center;
width:40%;
overflow:hidden;
position: relative;
display: block;
float:right;
}
.smenu_div ul li
{
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
background: rgba(0,0,0,0);
line-height:justified;
margin-top: 10px;
position:relative;
}
/* Changed this so that your hidden menu is hidden by default */
.smenu_div li ul
{
z-index: 50;
display: none;
position: relative;
width: 100%;
background: transparent;
float:none;
}
.smenu_div ul li a
{
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
text-decoration:none;
color:#ffffff;
background: #000000;
display:block;
position:relative;
}
/* @new */
.smenu_div ul li a.menu-title
{
padding-right: 50px;
background: #000000 url('plus.png') no-repeat right center;
background-size: 75px 75px;
}
.menu-open .smenu_div ul li a.menu-title
{
background-image: url('minus.png')
}
자바 스크립트
var hidden = true;
function showsub() {
document.getElementById('hiddenMenu').style.display = (hidden) ? 'block' : 'none';
document.body.classList.toggle('menu-open');
hidden = !hidden;
};
function hidemenu() {
document.getElementById('hiddenMenu').style.display = 'none';
document.body.classList.toggle('plus');
hidden = !hidden;
};
좋아요. 알았어. 이제 나는 바이올린을 업데이트하여 내가 원하는 이미지를 볼 수있게되었습니다. 메뉴 외부를 클릭하여 onBlur로 재생하십시오. 플러스로 돌아 가야 할 때 마이너스가 마이너스로 유지되는 것을 볼 수 있습니다. 메뉴를 숨기는 대신 메뉴를 다시로드하는 방법이 있습니까? http://jsfiddle.net/3eBux/2/ – user2631279
괜찮습니다. click 이벤트가 제대로 작동하지만 setTimeout을 사용하면'menu-open'을 제거 할 수 없습니다. 나는 코드를 약간 수정하여'menu-open'의 토글이 당신이하려는 것을 존중하도록합니다. (즉,'hidemenu'에 대한 호출은 항상'menu-open'을 제거하지만'showmenu'는'hidden'에 기반하여 토글합니다) [fiddle] (http://jsfiddle.net/3eBux/3/) – serakfalcon
AWESOME! 내가 필요한 것. 감사. – user2631279