jQeury淡入淡出需要注意的问题_jquery
前两天看到橡树小屋朋友发表的《JQuery 实现图片轮播效果》,比较有趣,发现他是使用fadeIn和fadeOut实现图片淡入淡出轮换的。当时曾担心他的例子中如果连续多次点击,所产生的动画会不会有延时。但我连续点击了几下,没看到明显的延时,就没再多想。
众所周知,jQuery所产生的动画效果默认会进入列队的。假如:点击一下,产生动画3秒钟。然后我快速的连点3次。那么要等到9秒钟,所有动画才能结束。animate是自定义动画,可以很容易的设定动画是否进入列队。但使用fadeIn和fadeOut就麻烦了。
看到有的Flash网站的图标,鼠标一放上去图标就缓缓变了,移开又会缓缓变回来,很是漂亮。我打算用jQuery也做做看,能不能做出类似的效果。因为自己练手,就随便拉两张图片:


这样第一张就会覆盖第二张图片,那我只要淡入淡出第一张图片就能实现特效了。于是就使用了hover,fadeIn和fadeOut,简单的实现了
$(document).ready(function () {
$("div").hover(
function () { $("#1").fadeOut(1000); },
function () { $("#1").fadeIn(1000); }
);
});
但这样问题出来了,如果我在图片上不停地快速的移入移出鼠标。那么动画都进入列队了,那么动画就会一直在动,很是不好看。
于是我打算使用:dequeue(),定义:Removes a queued function from the front of the queue and executes it.
我想如果不停的移入移出,那么就会删除上一个操作在列队中的动画。这样就会执行最后的动画了。
function () { $("#1").dequeue().fadeOut(1000); },
function () { $("#1").dequeue().fadeIn(1000); }
可是更麻烦的情况出现了,当不停地移入移出鼠标时,有时图片都没了,有时不变了。怎么回事?
然后又想到使用:stop(),定义:
Stops all the currently running animations on all the specified elements.
If any animations are queued to run, then they will begin immediately.
function () { $("#1").stop().fadeOut(1000); },
function () { $("#1").stop().fadeIn(1000); }
我停止前面所有的列队,总算可以了吧!但是却出现了图片淡到一半,不动了!就像两个图片叠加显示了一样。
又是怎么回事?
直到我在stop中加参数,图片才能正常显示。
clearqueue (可选)boolean
如果设置成true,则清空队列。可以立即结束动画。
gotoend (可选)boolean
让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等。
function () { $("#1").stop(true,true).fadeOut(1000); },
function () { $("#1").stop(true, true).fadeIn(1000); }
但这样就会出现执行完毕,突然显示整图的情况,就没有了淡入淡出的那样的效果了。
没办法,只有使用animate了。
function () { $("#1").stop().animate({ 'opacity': 0 }, 1000); },
function () { $("#1").stop().animate({'opacity':1}, 1000); }
或:
function () { $("#1").animate({ 'opacity': 0 }, { queue: false, duration: 1000 }); },
function () { $("#1").animate({ 'opacity': 1 }, { queue: false, duration: 1000 }); }
这才实现了想要的完美效果。
总结一下,使用stop和dequeue理论都是可以的,但为什么却出错?我也不太清楚,估计是jQuery库的问题吧,
这个要查原文件才找得到问题。但以后使用fadeIn和fadeOut真的注意一下。当然,到橡树小屋朋友的
《JQuery实现图片轮播效果》肯定是个好例子,直到我把时间改到2000才看出来有延迟的。只有我故意找毛病的人才会
这么干,其他哪还有人会设这么长的时间的。有兴趣的朋友可以去橡树小屋那学习一下,既简单又漂亮实用的例子。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

Eingehende Diskussion der Ursachen des Unterschieds in der Konsole.log-Ausgabe. In diesem Artikel wird die Unterschiede in den Ausgabeergebnissen der Konsolenfunktion in einem Code analysiert und die Gründe dafür erläutert. � ...

JavaScript zu lernen ist nicht schwierig, aber es ist schwierig. 1) Verstehen Sie grundlegende Konzepte wie Variablen, Datentypen, Funktionen usw. 2) Beherrschen Sie die asynchrone Programmierung und implementieren Sie sie durch Ereignisschleifen. 3) Verwenden Sie DOM -Operationen und versprechen Sie, asynchrone Anfragen zu bearbeiten. 4) Vermeiden Sie häufige Fehler und verwenden Sie Debugging -Techniken. 5) Die Leistung optimieren und Best Practices befolgen.

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...
