我打算做一個簡單的下拉菜單,它會在某個元素上的懸停事件觸發,並保持活動狀態,只要光標位於該元素上或在下拉列表中。當孩子被絕對定位時父母上的mouseenter事件
示例代碼:
HTML
<div class="header">
<div class="items">
<div class="item">
<span>Caption</span>
</div>
<ul class="items_hidden">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</div>
</div>
<input type="text">
CSS
.items {
float: right;
position: relative;
}
.item {
text-align: right;
}
.items_hidden {
display: none;
margin-top: 7px;
list-style: none;
z-index: 2000;
width: 80px;
border: 1px solid #f2f2f2;
text-align: left;
padding: 10px;
color: #333;
line-height: 30px;
border-bottom: 3px solid #f2f2f2;
}
input {
width: 100%;
}
JS
$(function() {
$('.items').on('mouseenter', function(e) {
$('.items_hidden').show();
});
$('.items').on('mouseleave', function(e) {
$('.items_hidden').hide();
});
});
我得到了工作,在下拉列表中的相對位置,但問題一度是l ist被顯示,它導致所有下面的內容向下移動。
下面是一個例子:https://jsfiddle.net/2ya06aLo/
另一種方式是定位列表絕對的,所以它不會影響下面的內容。但是在這種情況下,當我將光標移出'Caption'時(與第一個小提琴相反),這個列表會消失。
這裏是第二個例子https://jsfiddle.net/8L6ojqLm/
會是怎樣的解決方案,以使列表的行爲就像1,並在同一時間不會在2影響的其餘內容是怎樣的?
的原因,這並不具有絕對的定位工作是你離開這兩個元素之間的差距,使鼠標光標不能從「標題」元素傳遞給下拉元素直接。給他們兩個背景顏色,看看我的意思。然後,消除這個差距來解決問題。 – CBroe
@CBroe幫助,謝謝。 – Vladislav