Ich wollte ein Scroll -Mausrad zwischen dem ersten und zweiten Bildschirmen erstellen, um den Switching -Effekt zu nivellieren. Ich habe viele Probleme gestoßen. Später habe ich mit Hilfe von KK dieses Problem endlich gelöst. Ich war sehr glücklich, also habe ich es aufgenommen:
Mein ursprünglicher Code sieht so aus:
<! DocType html> <html Lang = "en"> <head> <meta charset = "utf-8"/> <style> div {width: 700px; Höhe: 1000px;}. Rot {Hintergrundfarbe: Rot; </div> <div> </div> <div> </div> <div> </div> </body> <script src = "../ Jquery/jQuery.min.js"> </script> <script src = "test.js"> </script> </html> $ (Dokument) .Ready (function () {var height = $ (Fenster) .Height (); // Erhalten Sie die Größe des aktuell sichtbaren Bereichs im Browserfenster // den gesamten Bildschirm nach dem Maus -Scrolls var scrollfunc = function (e) {var scrolltop = document.body.scrolltop || window.event; if ((e.wheelldelta <0 || e.Detail> 0) && scrolltop> = 0 && scrolltop <Höhe) {// nach verschiedenen Browsern $ (document.body.body) .animate ({Scrolltop: Höhe}, "Fast"); if ((e.wheelldelta> 0 || e.Detail <0) && scrolltop> = height && scrolltop <= Höhe+20) {// nach verschiedenen Browsern $ (Dokument) .Animate ({Scrolltop: 0}, "Fast"); if (document.adDeventListener) {document.addeventListener ('dommouSeScroll', scrollfunc, false);Ich habe solche Codes in IE und Firefox getestet, aber das Onmousewheel -Ereignis wird immer mehrmals unter Google mehrmals ausgelöst. Das ist eine äußerst nervige Sache. Warum wird es mehrmals ausgelöst? Nach dem Debuggen stellte ich fest, dass wir jedes Mal, wenn wir die Maus scrollen, immer viel nach dem anderen scrollten, anstatt langsam durch ein kleines Netz und ein kleines Netz zu scrollen. Dies führt dazu, dass das Onmousewheel -Ereignis beim Scrollen viele Male ausgelöst wird, und die Bildlauffunktion wird aufgerufen. Wenn die animierte Funktion in der Funktion nicht ausgeführt wird, wird sie kontinuierlich aufgerufen, so dass die Bildlaufleiste nicht nach unten rollen kann und die Seite nicht hochrollen kann. Also habe ich den obigen JS -Code in Folgendes geändert:
$ (document) .Ready (function () {var height = $ (Fenster) .Height (); var scrollfunc = Funktion (e) {document.onmousewheel = undefiniert; var scrolltop = document.body.scrolltop || document.documentElement.scrolltop; e = e || || fitnent; wenn (.Wheeldelta <0 || || || uwent; scrolltop> = 0 && scrolltop <hohe) {$ (document.body) .animate ({scrolltop: Höhe}, "Fast", "linear", function () {document.onmousewheel = scrollfunc;}); scrollfunc;});} else if ((e.wheelldelta> 0 || e.Detail <0) && scrolltop> = Höhe && Scrolltop <= Höhe+20) {$ (document.body) .Animate ({scrolltop: 0}, "Faste", "linear", Funktion () {) {Dokument. scrollfunc;}); $ (document.documentElement) .animate ({scrolltop: 0}, "fast", "linear", function () {document.onmousewheel = scrollfunc;});}}; if (document.adDeVentListener) {document.addeventListener ('dommouSeScroll', scrollfunc, false);} document.onmousewheel = scrollfunc;});OK, der Code funktioniert jetzt normal, aber da ich ein Anfänger bin und der Code nicht exquisit genug geschrieben ist, wurde ich von KK erneut gesagt. Bei seiner Aufforderung habe ich den redundanten Code geändert:
$ (document) .ready (function () {var height = $ (Fenster) .Height (); var width = $ (Fenster) .Width (); var body; if (navigator.useragent.indexof ("Firefox")> 0 || navigator.useragent.Indexof ("ms."). isfinish = true; var scrollfunc = function (e) {if (isfinish) {var scrolltop = body.scrolltop; e = e || E.Detail <0) && scrolltop> = Höhe && scrolltop <= hohe+20) {scroll (0);}}}; var scroll = function (Höhe) {isfinish = false; $ (Body) .Animate ({Scrolltop: Höhe}, "fast", "linear", funry () {) {) {) {isfinish = finish = isfinish = isfinish = isfinish = true;});}; if (navigator.useragent.indexof ("firefox")> 0) {if (document.addeventListener) {document.adDeVentListener ('DommouSeScroll', Scrollfunc, False);Endlich den Code für die Einführung erhalten. Ich muss sagen, dass ich durch die Lösung dieses Problems viel gelernt habe. In Zukunft müssen wir härter an dem Ziel arbeiten, "weniger zu schreiben, mehr zu tun"! ! !
Wenn am Schreiben etwas nicht stimmt, geben Sie mir bitte Ratschläge von allen Meistern, und ich werde demütig lernen.