Ich versuche, ein einfaches Dropdown-Menü zu erstellen, das bei Hover-Ereignis über ein Element ausgelöst wird und so lange aktiv bleibt, wie der Cursor über diesem Element ist oder ist über die Dropdown-Liste.Mouseenter-Ereignis bei Eltern, wenn ein Kind absolut positioniert ist
Beispielcode:
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();
});
});
Ich habe, dass die Arbeit, wenn die Dropdown-Liste relativ positioniert ist, aber die Problem ist einmal das l Wird angezeigt, werden alle folgenden Inhalte nach unten verschoben. Hier
ein Beispiel: https://jsfiddle.net/2ya06aLo/
Eine andere Möglichkeit wäre es, die Liste absolut zu positionieren, so dass er sich nicht auf den Inhalt unten beeinflussen würde. Aber in diesem Fall verschwindet die Liste als soons, wenn ich den Cursor aus 'Caption' (im Gegensatz zur ersten Geige) entferne.
Hier ist das zweite Beispiel https://jsfiddle.net/8L6ojqLm/
Was für eine Lösung wäre die Liste verhält sich wie in 1 und zugleich machen Sie nicht den Rest des Inhalts wie in 2 beeinflussen?
Der Grund, warum dies nicht mit der absoluten Positionierung funktioniert, ist, dass Sie eine Lücke zwischen den beiden Elementen lassen, so dass sich der Mauszeiger nicht aus dem „Caption“ Element in der Dropdown passieren kann Element direkt. Gib ihnen beide eine Hintergrundfarbe, um zu sehen, was ich meine. Und dann, beseitigen Sie diese Lücke, um das Problem zu lösen. – CBroe
@CBroe Das hat geholfen, danke. – Vladislav