geen Twitter, Twitter niet te rollen:,,,,,,,,,, delen, deel 1,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, dit is een goed instrument, maar het had ook een moment dat je het niet moet gebruiken?In deze handleiding, en we zullen zien hoe het gebruik van dit gedrag tot interessante rollen, en de herziening van de projecten kunnen door het wegnemen van zo veel mogelijk is, de verbetering van de produktie of, is niet mogelijk.,,,, het plan, soms is je code kan worden met een magische "minus het Aantal: goedheid.,. Je denkt misschien dat het normaal is iets vreselijks gedaan: les.Eigenlijk, dat is het niet.Maar je zou het uiteindelijk tot een heel Cool, maar eerlijk gezegd, misschien ook niet. Dit is niet het grootste probleem, ik wil dat je ver weg van deze handleiding.Zou je willen zien, ik ga je leren je te schrijven. Dit is, en zich bewust van wat magie?Soms kan je de code een magische "minus het aantal is aardig.Hoop dat dit voorbij is, zal je een beetje beter javascript dan toen je begon, dat klinkt te abstract, en is van mening dat dit een les in de wederopbouw, de prestaties en de code... Stap uit je comfortabele zone, een ontwikkelaar, stap 1: het project dat wij willen opbouwen.Ik uit een relatief nieuwe berichten gekregen van de inspiratie.Als je een aanvraag (het is gratis), om rekening te houden met de andere pagina 's.Als je naar beneden rollen, zult u zien dat ze niet van een hoofd naar links van elke tweet, tweet foto voor de eerste "volgen" als je naar beneden.Als je met een expeditie, je vindt zijn hoofd worden geplaatst in zijn of haar zingen.En toen begon ze retweeter tweet foto nemen,.,, dit is denk ik een functie.Het is niet zo moeilijk, dit in elkaar te zetten, denk ik.Dus ik begon.,, stap 2: http: //europa.eu.int & CSS, natuurlijk, voor we naar de ster van de show, moeten we een marker.Ik zou niet te veel tijd hier, omdat dit niet de les, en het belangrijkste punt:;.Doctype HTML> < http: //europa.eu.int lang= "en" > < head> < een gebruikersnaam "de utf - 8" > < title> Twitter avatar Scrolling< /title> < link rel = "stylesheet" "stijl CSS: //> <"; /head> < body> < section> < article> < IMG - = "Avatar" src = "images/one.jpg" /> < p> dit is iets dat de Twitter persoon had te say.< /p> < /article> < article> < IMG - = "Avatar" src = "images/two.jpg" /> < p> dit is iets dat de Twitter persoon was. Say.< /p> < /article> < article> < IMG - cia;SS = "Avatar" src = "beelden /foto 's /> < p> dit is Twitter mensen moet zeggen.< /p> < /article> < article> < article> < IMG - = "Avatar" src = "images/one.jpg" /> < p> dit is iets dat de Twitter persoon had te say.< /p> < /article> < article> < IMG - = "Avatar" src = "images/two.jpg" /> < p> dit is iets dat de Twitter persoon had to. < /p> < /article> < article> < IMG - = "Avatar" src = "images/two.jpg" /> < p> dit is iets dat de Twitter persoon had te say.< /p> < /article> < article> < IMG - Cl.= "Avatar" kont "beelden /s /src = > < p> dit is Twitter zegt. < /P > < /artikel > <.- meer een tweet - > < /dag > < script src = 'http: //Ajax. Googleapis. COM /Ajax /Lips /JQuery Java /. Js "> < /scripts > < script src =" Twitter rollen. J' s "> < /scripts > < script> $(" "). Twitter_scroll (" Avatar "); < /scripts > < /body > < /html >, het is, het is groot, Over sommige van de CSS?Probeer dit eens: het lettertype, lichaam {: keer /1.5 "helvetica Neue", de zwarte gaten, Ariel, serif; dat artikel {}: blok; achtergrond:ECECEC vullen; breedte: de oude 10 pixels 380px; 10 pixels, marge, overloop: verbergen;} {drijven: links de IMG; De marge: P - {} 0; het vullen van links: 60px;}, is klein, maar het brengt ons wat we nodig hebben, nu de javascript.,, stap 3:JavaScript, ronde 1, wil ik zeggen, het is niet je werk javascript controles gemiddelde is eerlijk, het is een beetje ingewikkelder.Hier zijn een paar dingen te overwegen:,, moet je elke verborgen beeld, dat reeds in het vorige "tweet foto.", als de scrollen, je moet zeker zijn van de "tweet" bovenaan de bladzijde, als. "Tweet" is een reeks "tweet" van de mensen. We hebben een vaste rol, zodat het niet volgen van de op de pagina 's, als "Twitter is vorig jaar in een vlucht van de gebruikers - en we moeten in de juiste positie van de avatar te stoppen. Is dit alles naar boven en beneden scrollen, omdat al het werk, dit is geëxecuteerd, elke keer als de in geval van brand, het is ongelooflijk, snel.,, aan het begin van iets schrijven, zorgen.Het werkt; en kan later.Een niet te verwaarlozen: een aantal belangrijke versie van de beste praktijken.Vanaf hier gaan we versie is: optimalisering van de code is, heb ik besloten om dit in een boek, dus de eerste stap is om te bepalen hoe noemt, ga ik dit, $(wrapper_element). Twitter_scroll (entries_element, unscrollable_element);: het voorwerp van de « plugin », "tweet" (of een van je rollen).- het eerste argument is een van de elementen van de telers,: "tweet" tweede - waar het nodig is (de plug - in de hoop dat deze beelden, maar er is niet veel voor nodig om de aanpassing van hun werk, de andere elementen van de elementen).Dus, we in html -, bellen we de « plugin », zoals:, $(""). Twitter_scroll ("de verordening", ". '"); ///////of $(""). Twitter_scroll ("Avatar"); zie je als we naar de code, het eerste argument is facultatief; als er slechts één parameter, achten wij het unscrollable -, en de ouders werken unscrollables rechtstreeks (en ik weet dat, unscrollables is een slechte naam, maar dit is wat ik denk dat de meest gewone dingen, dus, hier. We - Shell:, (functie ($) {jquery.fn.twitter_scroll = functie (post, unscrollable) {};) (:));, van nu af aan alle javascript kijken we naar binnen, plug - ins die, laten we beginnen met die code;In de procedures voor de behandeling van een installatie voor het werk als (!Unscrollable) {unscrollable = $(post); vermelding = unscrollable. De moedermaatschappij () {} anders; unscrollable = $(unscrollable); vermelding (post);} = dollar, ten eerste, de parameters: als unscrollable, is false-y waarden die we het "jquerified" vermeldingen, de selectie, de en de, werkt de voor de ouders, unscrollable,.Anders zullen we "jquerify" parameters.Merkt op dat, wat nu van belang is (als de juiste, gemarkeerd, we zullen moeten dragen ze), hebben we twee vliegen in een voorwerp met dezelfde index: dus, unscrollable [I], zijn kinderen, en ik werk [].Het zou nuttig zijn voor later.(noot: als we willen dat de gebruikers, niet de juiste etikettering van hun documenten, of ze gebruiken - om elementen, we willen, kunnen we het gebruik van deze parameters, in de context van, of het gebruik van de middelen te vinden die het volgende.), voorzien van een variabele, laat wat normaal zou Ik in; het doen, maar die afhankelijk zijn van unscrollable,,,,, gaat het dus om, ten eerste, het parent_from_top = var. De compenserende (). De top, entries_from_top = vermeldingen. Offset (). De top, img_offset = unscrollable. Offset (), prev_item = nul, starter = vals, marge = 2, anti_repeater = nul. Winnen = $(Luik), scroll_top = winnen. Scrolltop (), dat haar.Door middel van deze.Kan je je voorstellen, ons werk hier is een van de belangrijkste elementen van de te compenseren;), migratie, weer een object, top, migratie, links.De vader van elementen (en van de « plugin » in de « plugin »), post, we moeten alleen de hoogste gecompenseerd, dan halen we het.We moeten op de Top van de unscrollables, en aan de linkerkant, zodat we niet worden bepaalde variabelen, hier, prev_item beginnen,,,,, anti_repeater, zal gebruiken, zowel in de verwerking of de procedures, moeten we vasthouden aan de waarden, bij de behandeling van programma 's noemen.Tot slot, wint, zal worden gebruikt in sommige delen van de wereld, maar uit het raam, boven de scroll_top, de afstand, gebruiken we dit later vastgesteld in welke richting we rollen, onze volgende stap zal zijn om te bepalen welke elementen is de eerste in de "Twitter heeft strepen." is misschien een paar doen Op dit gebied we moeten gebruik maken van de gegevens; 5. In de desbetreffende elementen, de vermeldingen. Elke (functie (ik) {VAR IMG - = unscrollable [M]; als (dollar. Bevat (IMG)) {als (img.src = = = = = = = = = prev_item) {img.style.visibility "verborgen"; als (eerste) (post [·]. SetAttribute ("data-8088-starter", de "echte"); de starter = nep.Als (![1] de vermeldingen ik + {[M]) werken. SetAttribute ("data-8088-ender", de "echte");}} {prev_item = img.src anders; de starter = waar; als (post [...] & & unscrollable [...]. Style.visibility = = = "verborgen") {artikel [I - 1]. SetAttribute ("data-8088-ender", de "echte");}}}}); prev_item = nul;, gebruiken we), per post, methoden en voorwerpen.Onthoud, we zenden in functie, dit is een van de elementen van de input,,.We hebben ook index, we gebruiken.Zullen we beginnen met de overeenkomstige elementen, unscrollable, opgeslagen in een IMG,.Dus, als we de vermelding bevat elementen moeten worden, maar we onderzoeken), zullen we zien of de bron van het beeld is hetzelfde, prev_item; als, en we weten dat dit beeld is dezelfde als de vorige een ingang.Dus, zullen we ons niet verbergen dat beeld; gebruik van eigendom, want dat zou het schrappen van de stroom van het document, en wij willen niet dat de andere elementen in ons lichaam bewegen.En dan, als de starter, waar is, zullen we voor immigratie, voordat dit een eigenschap, data-8088-starter, onthoud dat, alle gegevens, zal het eigendom moet uit de gegevens "; dit is een goed idee, voor zijn toegevoegd, zodat je niet van conflicten en andere ontwikkelaars van de code (ik het voorvoegsel 8088, moet je je eigen:)).De gegevens zal het eigendom moet zijn van touw, maar in ons geval, hebben we het niet over gegevens; we hoeven het alleen maar elementen.Dan stellen we voor beginners, valse.Tot slot, als dit is de laatste, we zullen voor het einde van de etikettering, als het beeld komt niet omdat eerdere beeld als we de bron, opnieuw met het huidige beeld, prev_item, de bron; dan stellen we beginnen, echt.Dus, als we het volgende beeld van dezelfde bron, kunnen we dit een beeld voor beginners.Tot slot, als in dat van een voordat er een vermelding van het beeld, in verband met de verborgen is, zoals we weten, in een continu aan het einde van zijn (omdat dit een ander beeld).Dus, we kunnen de gegevens voor het einde van het als een eigenschap, als we klaar zijn, kunnen we vaststellen, prev_item, lege; we zullen snel terug, nu, als je kijkt naar de vuurvliegjes werkt, moet je dit zien... En de procedures voor de behandeling van:,, nu zijn we klaar voor werk In de behandeling van programma 's.Dit probleem heeft twee delen.In de eerste plaats, vinden wij dat het dichtst bij de vermeldingen bovenaan de bladzijde.Ten tweede, alles wat we doen is de juiste, in de relevante beeld, $(document) (", de". Bindende functie (e) {VAR temp_scroll = winnen. Scrolltop () = ((scroll_top -, naar beneden temp_scroll) < 0).Echt, top_item = nul, kinderen = nul; scroll_top = temp_scroll; ///////meer, dit is onze komende}) de behandeling; huisvesting; we hebben een aantal variabelen creëren we beginnen; nu opletten,,.Dat is waar, als we de scroll naar beneden, als we de rollen zijn vals.En dan, dat we opnieuw, scroll_top, de afstand is, van boven naar beneden, trek ons naar, laten we, top_item, is het dichtst bij de ingang bovenaan de bladzijde, top_item = vermeldingen. Filter (functie (ik) {VAR afstand =% (dit). De compenserende (). De scroll_top terug (afstand; < (parent_from_top + marge) & & afstand > (parent_from_top winst));}); en het is niet zo moeilijk, maar we gebruiken, filters, om te beslissen of wij die moeten worden toegewezen aan de vermelding van het top_item,,.Ten eerste, we krijgen, afstand, minus de op de Top van de ingang van onze gecompenseerd.Toen we terug, als de afstand tussen de rand van de winst, parent_from_top +, parent_from_top; anders vrij.Als je in de war, is dit in aanmerking te nemen: we moeten terug naar de realiteit van de elementen, in het raam van de top, in dit geval, de afstand is gelijk aan 0.Maar we moeten rekening houden met de verpakking van de container van onze "Twitter gecompenseerd," dus wat we echt willen, is gelijk aan de afstand, parent_from_top,.Maar we draaien de procedures niet als er brand is, hebben we juist in deze pixels, maar we hebben bijna het als het mogelijk is.Ik vond het toen ik de afstand, het is een halve pixel, ook, als je de behandeling niet te worden (dit is een niet is, in plaats van), is het mogelijk dat het niet in brand, elke gebeurtenis, rollen.Om ervoor te zorgen dat je een goede regionale, we zijn toegevoegd of afgetrokken van een kleine marge voor onze werkzaamheden in het kader van het project, en nu hebben we de top, laten we het doen, als top_item) {als (top_item. Attr ("data-8088-starter") {als.Anti_repeater) (= top_item kinderen. Kinderen (unscrollable. -); anti_repeater = kinderen () (doc. Appendto.); kinderen. De CSS ("zichtbaarheid", "verborgen"); anti_repeater. De CSS ({"locatie:" vaste "," top':img_offset.top + "Postkantoor", "links: img_offset.left +" de px "});}} anders als (top_item. Attr (" data-8088-ender ") {top_item. Kinderen (unscrollable. -). (" zichtbaarheid "," zichtbaar "); als (anti_repeater) {anti_repeater. Remove ();}} als (anti_repeater = nul.De volgende) {als (top_item. Attr ("data-8088-starter") {top_item. Kinderen (unscrollable. -). ("zichtbaarheid", "zichtbaar"); als (anti_repeater) {}); anti_repeater. Remove (anti_repeater = nul;} anders als (top_item. Attr ("data-8088-ender")) {(unscrollable = top_item kinderen. Kinderen. -); anti_repeater = kinderen () (doc. Appendto.); kinderen. De CSS ("zichtbaarheid", "verborgen"); anti_repeater. De CSS ({"locatie:" vaste ", de" top ":img_offset.top +" Postkantoor "en" links "Postkantoor"':img_offset.left +});}}}, misschien is het je opgevallen dat, de code is bijna hetzelfde alsTwee keer. Weet je nog, dit is van geoptimaliseerde versie.Als ik langzaam om dit probleem op te lossen, begon ik te weten hoe de scrollen; als ik het probleem opgelost, ik bleef gaan.Dit is niet erg duidelijk, totdat alle functies aanwezig is en dat er zo veel gelijkenis.Onthoud dat we snel moeten optimaliseren, dus laten we dit te analyseren.Als er een top - project, data-8088-starter, eigenschappen, dan, laten we eens kijken, anti_repeater, is vastgesteld; dat is een variabele elementen, wijst het imago, vastgesteld in de scrollen.Als anti_repeater, staat nog niet vast, dan laten we de kinderen zelf, top_item, de vermeldingen met dezelfde -, unscrollable, nee, dit is niet een slimme manier om dit te doen; we zullen de verbeterde).Dan, we zijn klonen, en aan het lichaam.Hebben we een locatie, en het klonen van een is precies waar het moet zijn, als een element niet, data-8088-starter, eigendom, zullen we controleren, data-8088-ender eigenschap.Als die er is, vinden we het juiste kind en het zichtbaar maken, dan schrappen, anti_repeater, en vaststelling van de variabele, nietig,., gelukkig, als we niet gaan, als we naar de), dat is precies wat we tegen twee eigenschappen.En als, top_item, geen eigenschappen die we in een ergens in het midden, en niets zal dat veranderen. En de beoordeling van de prestaties, nou, deze code is wat we willen, maar als je het een kans geven, je vindt dat je moet rollen, erg langzaam, het is normaal.Probeer nog lijnen, de console. Profiel ("de"), en de console. Profileend (), als een van de eerste en de laatste regel van de functie van de operatie.Voor mij, mevrouw werden behandeld in 4, 166 - 170 functie gebeuren.,,, te lang de procedure loopt, en, zoals je je kunt voorstellen, ik heb dit redelijkerwijs aan de computer.Op sommige functies, 30 maal genoemd; we hebben 30, en we werken samen, dus dit kan zijn voor een deel van hun verkeer in vinden.Dit betekent dat we er meer werk, meer langzaam het zal lopen, dus inefficiënt.Dus, we moeten kijken hoe we kunnen verbeteren.,, 4: javascript, de tweede ronde, als je denkt dat dit is de belangrijkste oorzaak, heb je gelijk.In het kader van de hulp en dom was zoals dit, ze heeft een compromis: de prestaties.Ja, ze is altijd beter, ja, dus het is een browser.Maar, we hebben een situatie moet zo snel mogelijk de code, en in ons geval, moesten we geven is een directe dom werk niet te veel moeilijker rollen., behandeling, laat de meest voor de hand liggende deel: wat moeten we doen, top_item, zodra we het haar nu.Op dit moment, top_item, is een goede doel; echter, gebruiken we dit alles is moeilijk te top_item, geen boek, dus we doen het "oorspronkelijke". Als we kijken naar, top_item, moeten we ervoor zorgen dat het dom is één van de originele elementen, dus we kunnen het veranderen het sneller:,, kunnen we de wederopbouw van onze verklaring als de enorme hoeveelheid te vermijden (dit is een code, netjes, geen prestaties), kunnen we gebruik maken van lokale aanpak, in plaats van getAttribute, is eigendom van,, kunnen we in zijn element unscrollable, overeenkomt met de top_item, input, en, niet gebruikt, unscrollable. - we kunnen het gebruik van de moedertaal, clodenode appendchild methode,,,, in plaats van de versie van ons is, de ca.N, stijl, in plaats van de methode van de CSS eigenschap is, kunnen we het gebruik van de moedertaal, in plaats van removeNode,), te schrappen, en door gebruik te maken van deze ideeën, die we aan het einde van dit: als (top_item) {als (beneden & & top_item. GetAttribute ("data-8088-starter")
De uitvoering van de code
Previous:Plezier met dit model en de Ajax