Introductie tot iScroll

In deze tutorial zal ik je leren hoe je iScroll 4 kunt gebruiken om een ​​eenvoudige mobiele website te maken. De site die we maken, heeft een vaste koptekst en een vaste voettekst met inhoud die gemakkelijk kan worden doorgeschoven. Zoals we zullen zien, is het bereiken van dit effect op zowel Android als iOS niet zo eenvoudig als u misschien denkt!

Webgebaseerde apps zijn een geweldige plek voor front-end ontwikkelaars om hun reis naar de wereld van het bouwen van mobiele applicaties te beginnen. Met behulp van uw bestaande kennis van HTML, CSS en Javascript, kunt u apps bouwen die er goed uitzien en die heel dicht bij die gemaakt zijn met een native platform-SDK. Nog beter, uw toepassingen zijn platformonafhankelijk en werken op elk mobiel apparaat met een moderne browser.

Natuurlijk zijn er een aantal kanttekeningen bij het ontwikkelen voor mobiele browsers. Sommige liggen voor de hand, zoals het onvermogen om de camera van het apparaat aan te boren (althans voorlopig). Anderen zijn misschien niet zo voor de hand liggend, zoals het grote aantal mobiele browsers dat al in gebruik is (de variëteit is verbijsterend).

Hoewel er tal van frameworks zijn (zoals jQuery Mobile, SenchaTouch, enz.) Die u kunnen helpen bij het opstarten van mobiele web-apps, ga ik er voorlopig geen gebruik van maken. In plaats daarvan ga ik me richten op pure JavaScript met één handige bibliotheek: iScroll 4.

iScroll lost een probleem op in de mobiele op WebKit gebaseerde browsers die te vinden zijn op zowel Android als iOS. Beide browsers bieden geen ondersteuning voor de absoluut gepositioneerde inhoud voor kop- en voetteksten met standaard verschoven tussenliggende inhoud. Het volledige HTML-document wordt gescrolled, ongeacht eventuele CSS die u mogelijk heeft om anders te bereiken. Omdat veel native mobiele applicaties zijn ontworpen met een vaste navigatiebalk aan de bovenkant van het scherm en een vaste werkbalk of tabbalk onderaan het scherm, is dit gebrek aan ondersteuning voor vaste inhoud in de WebKit-browsers echt een groot probleem. Geen zorgen: in deze tutorial laat ik je zien hoe je deze lay-out kunt bereiken met iScroll.


Stap 1: eenvoudige HTML-lay-out

Laten we doorgaan en een eenvoudige webapp-lay-out instellen. Dit zal een vrij eenvoudige pagina zijn en op geen enkele manier productiekwaliteit markup, maar voor deze demo zal het mooi werken.

Ik start over het algemeen de meeste mobiele web-apps (ik verwijs ernaar als Webile-apps), met dezelfde basissjabloon (ervan uitgaande dat ik geen HTML5-boilerplate of een ander framework gebruik). De enige metatags die ik in eerste instantie gebruik, zijn om de schaalopties in het kijkvenster in te stellen. Ik voeg ook een beetje 'reset' toe aan de elementen waarvan ik weet dat ze deze nodig hebben. Ik gebruik zelden een CSS-reset voor Webile Apps omdat het over het algemeen te veel is voor een mobiel apparaat en als je eenmaal bent geoptimaliseerd, is minder meestal meer.

      Web App-sjabloon     Web App-sjabloon  
Enkele voettekstinhoud

Stap 2: Basic CSS

Nu kunnen we wat standaard CSS toevoegen om een ​​mooie lay-out voor de kop- en voettekst te krijgen.

 lichaam font-family: helvetica;  header position: absolute; z-index: 2; top: 0; left: 0; Breedte: 100%; hoogte: 45 pixels; background-color: # deb500; padding: 0;  voettekst positie: absoluut; z-index: 2; bottom: 0; left: 0; Breedte: 100%; hoogte: 48px; background-color: # c27b00; padding: 0; border-top: 1px solid # 444;  header, footer font-size: 20px; text-align: center; color: # f3f3f3; font-weight: bold; text-shadow: 0 -1px 0 rgba (0,0,0,0.5); line-height: 45 pixels; 

Je zou nu iets moeten hebben dat er zo uitziet. Merk op dat we de kop- en voettekst een z-index gaven, dit zal een beetje in het spel komen.


Stap 3: Scrolbare inhoud

Nu is het tijd om de inhoud toe te voegen waar we graag doorheen scrollen. Ik heb een eenvoudige lijst gebruikt, maar de inhoud kan alles zijn wat je wilt. We moeten ervoor zorgen dat alles wat we willen scrollen is ingepakt in een container met een ID, die we gebruiken om in iScroll te haken. Dit bevindt zich in de DIV met de ID van de wrapper die we in stap 1 hebben ingesteld.

 
  • Wat spullen
  • Meer spullen
  • Grote spullen
  • Klein spul
  • Geek Stuff
  • Nerd Stuff
  • Snelle dingen
  • Slow Stuff
  • Goed spul
  • Slecht spul
  • Jouw spullen
  • Mijn spullen
  • Hun spullen
  • Onze spullen
  • Super spul
  • Uber-dingen
  • Spul
  • Frans spul
  • Duits spul
  • Engels spul
  • Amerikaans spul
  • spul

En laten we de lijst dan een paar leuke CSS geven om het er iets minder saai uit te laten zien. Ook gaan we de wrapper absoluut positioneren met een lagere z-index dan de header en de footer.

 #wrapper positie: absoluut; z-index: 1; top: 45px; bottom: 48px; left: 0; Breedte: 100%; achtergrond: #aaa; overflow: auto;  # scroll-inhoud positie: absoluut; z-index: 1; Breedte: 100%; padding: 0;  ul lijststijl: geen; padding: 0; margin: 0; Breedte: 100%; text-align: left;  li opvulling: 0 10px; hoogte: 40px; line-height: 40px; border-bottom: 1px solid #ccc; border-top: 1px solid #fff; background-color: #fafafa; font-size: 14px; 

Zoals u kunt zien, hebben we de wrapper een overflow gegeven: auto die in een browser ons in staat zou stellen om de wrapper te scrollen - maar als u uw apparaat incheckt?

We hebben geen mogelijkheid om te scrollen. Dit is precies het probleem dat iScroll moest oplossen, dus laten we het krijgen om ons te helpen.

Notitie: Als u de URL-balk boven aan uw toepassing wilt verwijderen (ALLEEN iOS), kunt u de volgende META-TAG toevoegen.

 

Nu, wanneer / als een gebruiker de applicatie toevoegt aan hun startscherm, kunnen ze het vanuit het besturingssysteem starten zoals elke andere toepassing, en de URL-balk zal niet worden weergegeven.

Een alternatieve benadering voor het verwijderen van de URL-balk is de methode die wordt besproken door Mark Hammonds in de zelfstudie Web-apps op volledig scherm - het is een goede methode die JavaScript gebruikt om de adresbalk automatisch te verbergen. Voor nu ga ik de META TAG-methode gebruiken omdat deze mooi en schoon is en de onderste knoppenbalk naast de adresbalk verwijdert.


Stap 4: iScroll in uw project krijgen

Ga naar de iScroll-startpagina en download de bron. iScroll 4 is de nieuwste versie van dit schrijven en de versie die we gaan gebruiken, dus zorg ervoor dat je die download. Pak de bestandsdownload uit en pak het bestand iscroll-lite.js. Omdat we alleen de basisschuiffunctionaliteit gebruiken, is dit alles wat we nodig hebben. Zet het bestand in de gewenste map. Voor nu, laat ik het in de root van het project vallen.


Stap 5: iScroll initialiseren

Eerst importeren we het bestand iscroll-lite.js in ons project. Importeer het bovenaan (de ) of de bodem (vlak voor de ) van de HTML. Mijn voorkeur gaat er naar om het onderaan in te voeren

  

Vervolgens stellen we een functie in die iScroll intreedt en in de wrapper haakt. Ten slotte voegen we een gebeurtenislistener toe aan het document om te wachten tot de inhoud is geladen voordat onze functie wordt afgebroken om iScroll in te trekken.

 

Stap 6: Eindproduct

Als je nu je apparaat controleert, zou je een mooie schuifbare lijst moeten hebben met een vaste kop- en voettekst.


Stap 7: Code Review

Hier is de volledige geschreven code die in deze tip wordt gebruikt.

       Web App-sjabloon     Web App-sjabloon  
  • Wat spullen
  • Meer spullen
  • Grote spullen
  • Klein spul
  • Geek Stuff
  • Nerd Stuff
  • Snelle dingen
  • Slow Stuff
  • Goed spul
  • Slecht spul
  • Jouw spullen
  • Mijn spullen
  • Hun spullen
  • Onze spullen
  • Super spul
  • Uber-dingen
  • Spul
  • Frans spul
  • Duits spul
  • Engels spul
  • Amerikaans spul
  • spul
Enkele voettekstinhoud

Een waarschuwing

Zoals we in deze tutorial hebben gezien, lost iScroll een probleem op in sommige op webkits gebaseerde mobiele browsers met vaste inhoudspositionering, maar er zijn ook enkele potentiële valkuilen. iScroll biedt geen ondersteuning voor alle momenteel beschikbare mobiele browsers. Er is bijvoorbeeld geen ondersteuning voor Windows 7-telefoons. Dit is dus vooralsnog een Android / iOS-WebKit-oplossing en hoewel het daar wel een oplossing biedt, wil je misschien meer onderzoek doen naar hoe iScroll "onder de motorkap" werkt voordat je het in je hele applicatie implementeert..

Meer iScroll-zelfstudies?

We hebben alleen de functionaliteit aangeroerd die iScroll kan bieden voor het ontwikkelen van mobiele web-apps. Naast wat ik in deze zelfstudie heb aangetoond, kan iScroll ook worden gebruikt voor 'Pull to Refresh', Horizontal Scrolling (voor carrousels), Pinch en Zoom (voor vaste inhoud) en Snap-to-Element.

Als u aanvullende zelfstudies over dit onderwerp wilt zien, kunt u hieronder een opmerking achterlaten om ons dit te laten weten!