RonaldGJ
Gebruiker
- Lid geworden
- 28 apr 2007
- Berichten
- 419
Beste mensen,
Ik ben momenteel wat aan het prutsen met een menu in JQuery. Normaal kom ik overal wel uit, maar zit eigenlijk met een vraag die mij al wel vaker dwars zit.
Je ziet vaak met JQuery als je de functie 'hover' gebruikt en je gaat er snel overheen, dat hij dan 'gek' wordt.
Misschien is hier iemand die daar een oplossing voor weet.
Code:
Probleem:
Als je snel over een knop gaat en er snel weer vanaf komt het menu alsnog naar beneden. Ik zou graag willen dat als je er op gaat en er snel weer af, dat de knop weer terug gaat naar de oude staat en er geen menu naar beneden klapt. Ik heb er een delay in gedaan, juist om dit te voorkomen. Ik heb het idee dat het menu toch naar beneden gaat vanwege de 'toggle' bij de 'height'.
Iemand een idee hoe dit op te lossen?
Is het niet duidelijk hoor ik het graag.
Vast bedankt!
Gr. Ronald!
Ik ben momenteel wat aan het prutsen met een menu in JQuery. Normaal kom ik overal wel uit, maar zit eigenlijk met een vraag die mij al wel vaker dwars zit.
Je ziet vaak met JQuery als je de functie 'hover' gebruikt en je gaat er snel overheen, dat hij dan 'gek' wordt.
Misschien is hier iemand die daar een oplossing voor weet.
Code:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Menu</title>
<link href="styles/style.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("li.menu-list-item").hover(function(){
$(this).addClass("add-borders");
$(this).find('a').addClass("change-color");
$(this).find("div.menu-sub-item").stop().delay(200).animate({'height': 'toggle'}, 200, 'linear');
}, function(){
$(this).stop().find("div.menu-sub-item").animate({'height' : 'toggle'}, 200, 'linear', function(){
$(this).parent().removeClass("add-borders").find('a').removeClass("change-color");
});
});
});
</script>
</head>
<body>
<div id="menu_wrapper">
<div id="menu">
<ul id="menu-list">
<li class="menu-list-item">
<div class="menu-sub-item">
Home sub
</div>
<a href="#">Home</a>
</li>
<li class="menu-list-item">
<div class="menu-sub-item">
Portfolio sub
</div>
<a href="#">Portfolio</a>
</li>
<li class="menu-list-item">
<div class="menu-sub-item">
Contact sub
</div>
<a href="#">Contact</a>
</li>
</ul>
</div>
</div>
</body>
</html>
Code:
body{
margin: 0 auto;
background-color: #CCC;
font-family: "Arial";
font-size: 12px;
line-height: 18px;
}
*{
margin: 0;
padding: 0;
}
a{
color: #FFF;
text-decoration: none;
display: block;
}
#menu_wrapper{
height: 40px;
color: #FFF;
background-color: rgba(0,0,0,0.7);
margin: 0 auto;
border-bottom: 1px solid #999;
box-shadow: 0px 0px 20px 2px rgba(0,0,0,1);
}
#menu{
margin: 0 auto;
width: 960px;
}
ul#menu-list{
list-style-type: none;
margin: auto;
padding-top: 3px;
}
ul#menu-list li{
float: left;
margin-right: 30px;
position: relative;
border-top: 8px solid transparent;
border-left: 12px solid transparent;
border-right: 12px solid transparent;
border-bottom: 12px solid transparent;
cursor: pointer;
}
ul#menu-list li.add-borders{
border-top: 8px solid #FFF;
border-left: 12px solid #FFF;
border-right: 12px solid #FFF;
border-bottom: 12px solid #FFF;
background-color: #FFF;
}
ul#menu-list li.menu-list-item a.change-color{
color: #333;
border-bottom: 1px dotted #AAA;
}
ul#menu-list li.menu-list-item div.menu-sub-item{
width: 200px;
background-color: #FFF;
color: #000;
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.3);
display: none;
position: absolute;
top: 30px;
left: -12px;
}
Probleem:
Als je snel over een knop gaat en er snel weer vanaf komt het menu alsnog naar beneden. Ik zou graag willen dat als je er op gaat en er snel weer af, dat de knop weer terug gaat naar de oude staat en er geen menu naar beneden klapt. Ik heb er een delay in gedaan, juist om dit te voorkomen. Ik heb het idee dat het menu toch naar beneden gaat vanwege de 'toggle' bij de 'height'.
Iemand een idee hoe dit op te lossen?
Is het niet duidelijk hoor ik het graag.
Vast bedankt!
Gr. Ronald!
