2015-12-15 122 views
2

我有一個下拉菜單。它由3個按鈕組成,因此只有主按鈕可見。當您將鼠標懸停在說萊佛士的主要按鈕上時,它會使按鈕向上移動。然後其他3個按鈕中的1個向下移動,最後一個按鈕保持不動。這會創建一個緊湊的下拉菜單。除了1個問題,它完美的工作。我把它設置爲當你把每一個懸停時,它將把它們轉移到需要的位置上。問題是,當我開始將鼠標懸停在不同的按鈕上時(它們已經移動之後),它們都開始再次移動,因爲我停止在1個按鈕上方懸停,並開始將鼠標懸停在下一個按鈕上。我怎樣才能防止這種情況發生?下拉菜單javascript函數

var dropdown = function() { 
 
    $('.inbutton, .dr1button, dr2button').hover(function() { 
 
     $('.inbutton').animate({ 
 
      top: '-183px' 
 
     }, 200); 
 
     $('.dr2button').animate({ 
 
      top: '0px' 
 
     }, 200); 
 
    }, function() { 
 
     $('.inbutton').animate({ 
 
      top: '-122px' 
 
     }, 200); 
 
     $('.dr2button').animate({ 
 
      top: '-61px' 
 
     }, 200); 
 
    }); 
 
}; 
 

 

 
$(document).ready(dropdown);
p.button { 
 
    padding: 0px 13px 0px 13px; 
 
    background-color: #333333; 
 
    float: left; 
 
    font-family: default_font; 
 
    font-size: 30; 
 
    color: white; 
 
    text-align: center; 
 
    line-height: 61px; 
 
    border-bottom: 1px solid #1C1C1C; 
 
    box-sizing: border-box; 
 
    height: 100%; 
 
    transition: height 0.2s ease; 
 
} 
 

 
p.button:hover { 
 
    height: 110%; 
 
    border-bottom: 0px; 
 
    cursor: pointer; 
 
} 
 

 
p.dbutton { 
 
    padding: 0px 13px 0px 13px; 
 
    background-color: #333333; 
 
    float: left; 
 
    font-family: default_font; 
 
    font-size: 30; 
 
    color: white; 
 
    vertical-align: middle; 
 
    line-height: 30.5px; 
 
    text-align: center; 
 
    border-bottom: 1px solid #1C1C1C; 
 
    box-sizing: border-box; 
 
    height: 100%; 
 
    transition: height 0.2s ease; 
 
} 
 

 
p.dbutton:hover { 
 
    height: 110%; 
 
    border-bottom: 0px; 
 
    cursor: pointer; 
 
} 
 

 
p.inbutton { 
 
    padding: 0px 13px 0px 13px; 
 
    background-color: #333333; 
 
    float: left; 
 
    font-family: default_font; 
 
    font-size: 30; 
 
    color: white; 
 
    text-align: center; 
 
    line-height: 61px; 
 
    border-bottom: 1px solid #1C1C1C; 
 
    box-sizing: border-box; 
 
    height: 100%; 
 
    position: relative; 
 
    top: -122px; 
 
    z-index: 98; 
 
} 
 

 
p.inbutton:hover { 
 
    border-bottom: 0px; 
 
    cursor: pointer; 
 
} 
 

 
p.dr1button { 
 
    background-color: #333333; 
 
    float: left; 
 
    font-family: default_font; 
 
    font-size: 30; 
 
    color: white; 
 
    text-align: center; 
 
    line-height: 61px; 
 
    height: 100%; 
 
    width: 144px; 
 
    position: relative; 
 
    z-index: 97; 
 
    transition: background-color 0.2s ease; 
 
} 
 

 
p.dr1button:hover { 
 
    background-color: #585858; 
 
    cursor: pointer; 
 
} 
 

 
p.dr2button { 
 
    background-color: #333333; 
 
    float: left; 
 
    font-family: default_font; 
 
    font-size: 30; 
 
    color: white; 
 
    text-align: center; 
 
    line-height: 61px; 
 
    height: 100%; 
 
    width: 144px; 
 
    position: relative; 
 
    top: -61px; 
 
    z-index: 98; 
 
    transition: background-color 0.2s ease; 
 
} 
 

 
p.dr2button:hover { 
 
    background-color: #585858; 
 
    cursor: pointer; 
 
} 
 

 
div.navbardivider { 
 
    height: 61px; 
 
    width: 1px; 
 
    background-color: #424242; 
 
    border-bottom: 1px solid #1C1C1C; 
 
    box-sizing: border-box; 
 
    float: left; 
 
} 
 

 
div.dropdown { 
 
    width: 144px; 
 
    float: left; 
 
} 
 

 
div.divider:hover { 
 
    cursor: pointer;
<div id="buttons"> 
 
    <!--Home button--> 
 
    <a href="/"><p class="button">- Home</p></a> 
 
    <!--Divider--> 
 
    <div class="navbardivider"></div> 
 
    <!--Raffles Button--> 
 
    <div class="dropdown"> 
 
    <a href="/raffles.php"> 
 
     <p class="dr1button">Open</p> 
 
    </a> 
 
    <a href="/clraffles.php"> 
 
     <p class="dr2button">Closed</p> 
 
    </a> 
 
    <p class="inbutton">Raffles</p> 
 
    </div> 
 
    <!--Divider--> 
 
    <div class="navbardivider"></div> 
 
    <!--Get tokens Button--> 
 
    <a href="/gettokens.php"><p class="dbutton">Get<br>Tokens</p></a> 
 
    <!--Divider--> 
 
    <div class="navbardivider"></div> 
 
    <!--Token lotto Button--> 
 
    <a href="/lotto.php"><p class="dbutton">Token<br>Lotto</p></a> 
 
</div>

+1

請發佈完整的代碼示例,包括HTML和CSS。 – j08691

+0

@ j08691它已被編輯 – Lion

+0

不能在代碼段中工作。 –

回答

1

你的問題是在這裏:

$('.inbutton, .dr1button, dr2button').hover 

你有一對夫婦的問題。通過單獨觸發按鈕,您可以將鼠標懸停在另一個之上。它在重新打開之前觸發關閉。這導致了彈跳效果。你也錯過了「。」在dr2button前面,所以它不會觸發懸停效果。

我會用包裝來代替:

$('.dropdown').hover 

這樣,一旦你將鼠標懸停在下拉它一直開到你的鼠標了。看看這個小提琴:http://jsfiddle.net/r5Lyga84/

+0

這太棒了!非常感謝。答案很簡單,我覺得現在沒有想到這一點,我感到很傻。感謝您向我展示這一點,我將努力在將來保持這一點! – Lion