Verständnis js-code in classie.js

hey Leute ein, die ich heruntergeladen einige einfache Effekt in JS codiert . das plugin heisst classie.js und der Kerl geschrieben hat, einige benutzerdefinierte code für die Interaktion mit diesem plugin classie.js

eine ähnliche Frage wurde gebeten, vor einer Weile classie.js Frage und der Kerl wirklich perfekt beantwortet, wie der code innerhalb classie.js ist funktionieren . das ist großartig , so dass ich nun verstehe, wie der code innerhalb classie.js funktioniert , nun mein problem ist , es gibt eine Menge code geschrieben, der tatsächlich interagiert mit diesem plugin aufgerufen classie.js und ich habe einige Schwierigkeiten Verständnis . so lassen Sie mich erklären, was elaboratly ist mein problem :

Den classie.js code :

( function( window ) {

'use strict';

var hasClass, addClass, removeClass;


if ( 'classList' in document.documentElement ) {

  //console.log(document.documentElement);

  hasClass = function( elem, c ) {
    //cons100%ole.log("elem is : " + elem + " c is " + c);
    return elem.classList.contains( c );
  };

  addClass = function( elem, c ) {
    console.log('elem Logged');
    console.log(elem);
    elem.classList.add( c );
  };

  removeClass = function( elem, c ) {
    console.log('removeClass function got used in if statement')
    elem.classList.remove
    ( c );
  };
}
 else {
       //I have deleted this part as its only a fallback for older browsers. :)
 }

function toggleClass( elem, c ) {
  var fn = hasClass( elem, c ) ? removeClass : addClass;
  fn( elem, c );
}

var classie = {
  //full names
  hasClass: hasClass,
  addClass: addClass,
  removeClass: removeClass,
  toggleClass: toggleClass,
  //short names
  has: hasClass,
  add: addClass,
  remove: removeClass,
  toggle: toggleClass
};

//transport
if ( typeof define === 'function' && define.amd ) {
  //AMD
  define( classie );
} else if ( typeof exports === 'object' ) {
  //CommonJS
  module.exports = classie;
} else {
  //browser global
  window.classie = classie;
}

})( window );

Den code, der Interagiert mit classie.js :

(function() {


                //disable/enable scroll (mousewheel and keys) from https://stackoverflow.com/a/4770179                 
                //left: 37, up: 38, right: 39, down: 40,
                //spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
                var keys = [32, 37, 38, 39, 40], wheelIter = 0;

                function preventDefault(e) {
                    e = e || window.event;
                    if (e.preventDefault)
                    e.preventDefault();
                    e.returnValue = false;  
                }

                function keydown(e) {
                    for (var i = keys.length; i--;) {
                        if (e.keyCode === keys[i]) {
                            preventDefault(e);
                            return;
                        }
                    }
                }

                function touchmove(e) {
                    preventDefault(e);
                }

                function wheel(e) {
                    //for IE 
                    //if( ie ) {
                        //preventDefault(e);
                    //}
                }

                function disable_scroll() {
                    window.onmousewheel = document.onmousewheel = wheel;
                    document.onkeydown = keydown;
                    document.body.ontouchmove = touchmove;
                }

                function enable_scroll() {
                    window.onmousewheel = document.onmousewheel = document.onkeydown = document.body.ontouchmove = null;  
                }

                var docElem = window.document.documentElement,
                    scrollVal,
                    isRevealed, 
                    noscroll, 
                    isAnimating,
                    container = document.getElementById( 'container' ),
                    trigger = container.querySelector( 'button.trigger' );

                function scrollY() {
                    return window.pageYOffset || docElem.scrollTop;
                }

                function scrollPage() {
                    scrollVal = scrollY();

                    //console.log(scrollVal);  

                    if( classie.has( container, 'notrans' ) ) {
                        classie.remove( container, 'notrans' );
                        return false;
                    }

                    if( isAnimating ) {
                        return false;
                    }

                    if( scrollVal <= 0 && isRevealed ) {
                        toggle(0);
                    }
                    else if( scrollVal > 0 && !isRevealed ){
                        toggle(1);
                    }
                }

                function toggle( reveal ) {
                    isAnimating = true;

                    if( reveal ) {
                        classie.add( container, 'modify' );
                    }
                    else {
                        noscroll = true;
                        disable_scroll();
                        classie.remove( container, 'modify' );
                    }

                    //simulating the end of the transition:
                    setTimeout( function() {
                        isRevealed = !isRevealed;
                        isAnimating = false;
                        if( reveal ) {
                            noscroll = false;
                            enable_scroll();
                        }
                    }, 600 );
                }

                //refreshing the page...
                var pageScroll = scrollY();
                noscroll = pageScroll === 0;

                disable_scroll();

                if( pageScroll ) {
                    isRevealed = true;
                    classie.add( container, 'notrans' );
                    classie.add( container, 'modify' );
                }

                window.addEventListener( 'scroll', scrollPage );
                //trigger.addEventListener( 'click', function() { toggle( 'reveal' ); } );
            })();

alot des Codes, der im zusammenspiel mit classie.js ist eigentlich abgeleitet aus einem thread direkt von stackoverflow : wie zum deaktivieren und aktivieren scrollen

nun alle oben genannten ist nur für Ihre klaren Verständnis , was meine Frage wirklich , ich verstehe nicht ganz die Verwendung der add-Methode in den code für die Interaktion mit dem classie.js API , der seine irgendwie gar keinen Sinn für mich und MDN doc sagt sehr wenig über diese Methode . was ist die Methode wirklich, wirklich tun ?? .

Edit :: Der verwirrende Teil :

function toggle( reveal ) {
                    isAnimating = true;

                    if( reveal ) {
                        classie.add( container, 'modify' );
                    }
                    else {
                        noscroll = true;
                        disable_scroll();
                        classie.remove( container, 'modify' );
                    }

                    //simulating the end of the transition:
                    setTimeout( function() {
                        isRevealed = !isRevealed;
                        isAnimating = false;
                        if( reveal ) {
                            noscroll = false;
                            enable_scroll();
                        }
                    }, 600 );
                }

Oben ist der Teil, der mich verwirrt , bin ich richtig wenn ich vermute , dass, wenn eine beliebige Funktion aus classie.js muss verwendet werden , es muss verwendet werden, wie folgt :

classie.functionname(); ?? und können nicht direkt beurteilt ?? zB. functionname();

Meine Zweite Große Problem (Verständnis JS-syntax classie.js) :

auch als eine Ergänzende Frage haben , können Sie wählen , nicht zu Antworten, aber bestimmte Teile des Codes, die in Wechselwirkung mit classie.js hat eine Menge von verwirrenden syntax , lassen Sie mich darauf hingewiesen haben .

in der disable_scroll Funktion gibt es diese :

  window.onmousewheel = document.onmousewheel = wheel;
  document.onkeydown = keydown;

und aktivieren Sie scroll-Funktion es ist :

window.onmousewheel = document.onmousewheel = document.onkeydown = null;

jetzt verstehe ich

A = B ;

wobei ur die Zuordnung A der Wert von B ;

Aber Das oben beschriebene Syntex ist mehr wie Ein = B = C ; und das ist völlig über meinen Kopf .

kann jemand das Bitte erklären

wenn jemand werden kann, erarbeiten und erklären , es wäre toll .

Danke.

Alexander.

  • add-Methode? meinst du addEventListener?
  • Nein, es ist Teil der kleinen Bibliothek. OP-Es ist nur das hinzufügen und entfernen von Klassen von DOM-Knoten.
  • Ich sehe keine Methode mit dem Namen add irgendwo in den code gepostet, so dass ich nicht weiß, was die OP spricht,
  • GENAU !!! DAS WAR EINE MEINER FRAGEN , Bearbeiten und hinzufügen, dass , ich meine, ist das hinzufügen nativen js-Methode oder ist es Teil classie.js auch wenn es Teil der classie.js ich denke, es ist zu berufen, wie classie.hinzufügen , nicht nur. !!
  • bearbeitet .
  • bearbeitet .
  • Die "add" - Funktion ist direkt in den code am Ende der Bibliothek. Siehe die "kurz-Namen" kommentieren? "hinzufügen" und "entfernen" sind Synonyme für "addClass" und "removeClass".
  • Die OBJEKT-LITERAL innerhalb classie.js , wass ich vermute, dass Teil war zu tun, was u sagte , immerhin danke für die erneute Bestätigung , ich denke, der Kerl, codiert , hat das so für zB. wenn jemand anrufen wollte classie.addClass() , könnten Sie sagen, classie.add() oder classie.addClass() . Recht????
  • Ja, genau 🙂 In einer Bibliothek, die winzig und ich bin nicht sicher, warum es wichtig ist, aber ja, Sie sind nur Verknüpfungen. Und ja, alle Anrufe werden müssen, von der form classie.something().
  • pfffff !! vielen Dank !
  • Ich haben Hinzugefügt, ein weiterer Teil namens " mein 2. großes problem , kannst du bitte versuchen Sie zu beantworten,, tut mir Leid, ein Schmerz 🙂
  • A = B = C nur Mittel zum zuweisen C sowohl A und B - in JavaScript eine Zuordnung (A=B) einen Wert hat, ist, dass B. So A=B=C ist wie A=(B=C); der Wert von B=C ist C es so ordnet, dass A.
  • Fantastisch , Vielen Dank .

Schreibe einen Kommentar