Ich habe ein Problem mit mouseenter/mouseleave, um Verhalten auszulösen, bei dem die Bewegung am meisten über die Zielelemente zu schnell unerwünschtes Verhalten verursacht. Ich habe ein paar Threads mit ähnlichen Problemen gesehen, aber keine, die mein Problem zu lösen scheinen.mouseenter/mouseleave caption swap funktioniert nicht, wenn Maus zu schnell bewegt wird
Ich erstelle ein Raster von Bildern mit überlagerten "Titel" -Beschriftungen. Ich versuche, es so zu machen, dass, wenn der Benutzer über ein Bild in dem Raster mauset, die Titelbeschriftung ausgeblendet wird, und stattdessen eine Beschreibungsbeschriftung angezeigt wird. Dies wird dann auf mouseleave umgekehrt und die Titelbezeichnung erscheint wieder.
Ich habe mouseenter/mouseleave und fadeIn/FadeOut verwendet, um den Effekt zu erzielen - es funktioniert ok, wenn Sie langsam zwischen den Blöcken bewegen, aber wenn Sie zu schnell bewegen, werden "Titel" und "Beschreibung" beide gleichzeitig angezeigt. Hier ist mein Code:
$(".stage").mouseenter(function() {
var desc = $(".desc", this);
var title = $(".title", this);
title.fadeOut(200, "swing", function() {
desc.fadeIn(100, "swing");
});
}).mouseleave(function() {
var desc = $(".desc", this);
var title = $(".title", this);
desc.fadeOut(0, "swing", function() {
title.fadeIn(0, "swing");
});
});
.stage {
height: 200px;
width: 200px;
background-color: #1d2452;
color: white;
position: relative;
display: inline-block;
}
.stage > .caption {
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
text-align: center;
}
.desc {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="stage">
<div class="caption">
<h2 class="title">Title</h2>
<p class="desc">Description Text</p>
</div>
</div>
<div class="stage">
<div class="caption">
<h2 class="title">Title</h2>
<p class="desc">Description Text</p>
</div>
</div>
<div class="stage">
<div class="caption">
<h2 class="title">Title</h2>
<p class="desc">Description Text</p>
</div>
</div>
Und JSfiddle hier - https://jsfiddle.net/y16nufd7/1/
Ah, das funktioniert! Ich benutzte .stop (wahr, wahr), was mich nicht dorthin brachte, aber das macht den Trick, danke! –
Froh, Ihnen zu helfen =) – SilverSurfer