Met flashcards kun je woorden, sommen en andere dingen oefenen. Op de voorkant staat een vraag. Draai de kaart om en je ziet het antwoord.
In deze instructie bouw je jouw eigen flashcardtrainer met HTML, CSS en JavaScript. Je geeft de kaarten een eigen ontwerp en laat ze echt omdraaien.
Je kunt de trainer bijvoorbeeld gebruiken om woordjes voor Engels te oefenen.
Op de voorkant zet je apple en op de achterkant zet je appel. Je kunt hem
ook vullen met tafels, topografie of vragen voor een proefwerk.
Dit ga je maken
Aan het einde kun je:
- een kaart omdraaien;
- naar de volgende kaart gaan;
- zelf vragen en antwoorden toevoegen;
- de kaarten in de browser bewaren.
Werk rustig van boven naar beneden. Test je website na iedere stap.
Wat heb je nodig?
Een computer met een browser, bijvoorbeeld Firefox, Chrome of Edge.
Visual Studio Code, vaak afgekort tot VS Code, is een programma waarin je code kunt schrijven. Het is gratis en werkt op Windows, macOS en Linux.
Downloaden
Tijdens de dojo kun je het installatiebestand sneller downloaden van de CoderDojo-server:
Je kunt VS Code ook downloaden van de officiële website: Download Visual Studio Code.
Kies de download die bij jouw computer past:
- Windows: kies bij voorkeur de User Installer. Daarvoor heb je meestal geen beheerderswachtwoord nodig.
- macOS: download het bestand voor macOS. De Universal-versie werkt op Macs met een Intel-processor en op nieuwere Macs met Apple silicon.
- Linux: kies het pakket voor jouw Linux-versie. Voor Ubuntu en Debian is
dat meestal het bestand dat eindigt op
.deb.
Weet je niet welke versie je nodig hebt? Vraag dan een mentor om mee te kijken.
Installeren op Windows
- Open het gedownloade bestand. De naam begint meestal met
VSCodeUserSetupen eindigt op.exe. - Volg de stappen van het installatieprogramma.
- Start Visual Studio Code na de installatie.
Een uitgebreide uitleg staat in de officiële Windows-handleiding.
Installeren op macOS
- Open het gedownloade bestand dat eindigt op
.dmg. - Sleep
Visual Studio Code.appnaar de mapApplicationsofProgramma's. - Open Visual Studio Code vanuit die map.
Een uitgebreide uitleg staat in de officiële macOS-handleiding.
Installeren op Linux
Op Ubuntu of Debian kun je meestal dubbelklikken op het gedownloade
.deb-bestand. Het softwarecentrum helpt je dan met de installatie.
Gebruik je een andere Linux-versie of lukt de installatie niet? Vraag een mentor om hulp of bekijk de officiële Linux-handleiding.
Een projectmap openen
In een projectmap bewaar je alle bestanden die bij jouw programma horen.
- Start Visual Studio Code.
- Kies in het menu File → Open Folder…. In een Nederlandse versie heet dit Bestand → Map openen….
- Zoek de projectmap die je voor de instructie hebt gemaakt.
- Kies Select Folder of Open.
Links in VS Code staat de Explorer. Daar zie je de projectmap en de bestanden die erin staan.
Vraagt VS Code of je de makers van de bestanden vertrouwt? Bij een map die je zelf hebt gemaakt, kun je kiezen dat je de makers vertrouwt.
Een bestand maken
- Beweeg met de muis over de naam van de projectmap in de Explorer.
- Klik op het pictogram New File. Dat ziet eruit als een vel papier met een plusteken.
- Typ de volledige bestandsnaam uit de instructie, bijvoorbeeld
index.html. - Druk op Enter.
Klik op een bestandsnaam in de Explorer om het bestand te openen. In het grote vlak in het midden kun je de code typen of plakken.
Bewaar je werk regelmatig met Ctrl+S op Windows en Linux, of Cmd+S op macOS. Een witte stip naast de bestandsnaam betekent dat er nog onopgeslagen wijzigingen zijn.
VS Code kan vragen of je wilt inloggen of AI-functies wilt gebruiken. Dat is voor de CoderDojo-instructies niet nodig. Je kunt zo’n vraag sluiten.
Maak een nieuwe map met de naam flashcards. Maak daarin deze drie bestanden:
| |
Let op: controleer goed of de namen precies hetzelfde zijn.
style.css.txtis bijvoorbeeld niet hetzelfde alsstyle.css.
Open daarna de map flashcards in Visual Studio Code zoals hierboven is
uitgelegd. Maak de drie bestanden met de knop New File.
Stap 1: de pagina maken met HTML
HTML bepaalt wat er op een webpagina staat. Open index.html en zet deze
code erin:
| |
Bewaar index.html en open het bestand daarna vanuit de map flashcards in de
browser. Je ziet nu tekst, maar het lijkt nog niet op een echte kaart. Dat
veranderen we met CSS.
Na een wijziging bewaar je het bestand in VS Code en vernieuw je de pagina in de browser. Zo controleer je steeds wat jouw code doet.
Stap 2: de kaart opmaken met CSS
CSS bepaalt hoe de pagina eruitziet. Open style.css en begin met de pagina:
| |
Sla het bestand op en vernieuw de pagina. De achtergrond en de letters zijn nu veranderd.
Zet onderaan in style.css ook de vorm van de kaart:
| |
Probeer het zelf
Verander steeds één ding en kijk wat er gebeurt:
- Kies een andere
background-color. - Maak de rand dikker of dunner.
- Verander
border-radius: 20pxin0pxof50px. - Verander de breedte van de kaart.
Op htmlcolorcodes.com/color-names vind je namen en codes van kleuren.
Stap 3: een voor- en achterkant maken
De twee kanten staan nu nog onder elkaar. Met extra CSS leggen we ze op elkaar.
Vervang de CSS van .kaart door:
| |
Zet daarna deze nieuwe regels onderaan in style.css:
| |
De voor- en achterkant liggen nu precies op elkaar. De achterkant is alvast een halve slag gedraaid en daardoor verborgen.
Sommige CSS in dit stukje ziet er misschien ingewikkeld uit. Je hoeft nog niet alles uit je hoofd te kennen. De regels zorgen samen voor het draaieffect.
Stap 4: de kaart omdraaien
We maken eerst in CSS een regel voor een omgedraaide kaart. Zet deze regel
onderaan in style.css:
| |
JavaScript bepaalt wat er gebeurt wanneer je op de kaart klikt. Open
script.js en voeg deze functie toe:
| |
Een functie is een klein programma met een naam. Deze functie zet de class
omgedraaid aan of uit.
De functie moet nog worden gestart wanneer je op de kaart klikt. Verander in
index.html deze regel:
| |
in:
| |
Sla alle bestanden op en klik op de kaart. Draait hij om?
Probeer het zelf
In deze regel bepaalt 0.6s hoe lang de draai duurt:
| |
Probeer bijvoorbeeld 0.2s en 2s. Welke snelheid vind jij prettig?
Stap 5: meer vragen toevoegen
Nu staat de vraag nog vast in de HTML. We gaan de vragen bewaren in JavaScript.
Vervang alles in script.js door:
| |
De rechte haken [ en ] maken een lijst. Ieder onderdeel van de lijst bevat
een vraag en een antwoord.
Maak een eigen kaart
Verander één van de vragen en antwoorden. Of zet voor de laatste ]; een extra
kaart. Vergeet de komma na de vorige kaart niet:
| |
Vernieuw de pagina. De eerste vraag uit JavaScript staat nu op de kaart.
We kunnen de nieuwe kaarten nog niet bekijken. Daarvoor moeten we eerst door naar stap 6.
Stap 6: naar de volgende kaart
JavaScript zoekt straks de teksten op met een id. Verander in
index.html het volgende:
| |
wordt:
| |
en:
| |
wordt:
| |
Zet in index.html, direct onder de kaart, een knop:
| |
Geef de knop onderaan in style.css een duidelijke vorm:
| |
Zet deze nieuwe functie in script.js, boven toonHuidigeKaart();:
| |
De functie telt één op bij het kaartnummer. Na de laatste kaart begint hij weer
bij de eerste. Als het antwoord zichtbaar is, wacht JavaScript op
transitionend: het einde van de draai. Pas daarna komen de teksten van de
volgende kaart in beeld. Met once: true wacht de browser maar één keer op het
einde van deze draai.
Test de knop. Zie je alle vragen langskomen?
Stap 7: zelf een kaart toevoegen
We maken een formulier. Zet deze HTML onder de knop:
| |
Maak het formulier overzichtelijk met CSS:
| |
Zet deze functie in script.js, weer boven toonHuidigeKaart();:
| |
push() stopt de nieuwe kaart achteraan in de lijst. Voeg een kaart toe en
zoek hem daarna op met de knop Volgende kaart.
Stap 8: kaarten bewaren
Je zelfgemaakte kaarten verdwijnen nog wanneer je de pagina opnieuw laadt. De
browser heeft een klein geheugen voor websites: localStorage.
Verander bovenaan script.js:
| |
in:
| |
Zet direct na de lijst met standaardkaarten deze regel:
| |
Voeg daarna twee nieuwe functies toe:
| |
JSON.stringify() pakt de kaarten in als tekst. JSON.parse() pakt die tekst
later weer uit.
Laat de browser de kaarten bewaren na het toevoegen. Zoek in voegKaartToe()
dit stukje op:
| |
Zet er direct onder:
| |
De grote geheugentest
- Voeg een zelfgemaakte kaart toe.
- Vernieuw de pagina.
- Klik door de kaarten heen.
Is je nieuwe kaart er nog? Dan werkt het geheugen van je trainer.
Extra uitdaging: kaarten downloaden
Met deze uitbreiding kun je jouw kaarten meenemen naar een andere computer.
Maak eerst in index.html, onder het formulier voor een nieuwe kaart, een
tweede paneel:
| |
Zoek in style.css deze regel op:
| |
en verander hem in:
| |
Het nieuwe paneel krijgt daardoor dezelfde witte achtergrond en afgeronde hoeken als het formulier.
Zet deze functie in script.js:
| |
Klik op de knop. Je browser downloadt het bestand mijn-flashcards.json.
Deze functie gebruikt een paar nieuwe browsercommando’s. Je hoeft ze niet uit je hoofd te leren. Probeer het gedownloade bestand eens te openen in je codeprogramma. Herken je jouw vragen en antwoorden?
Extra uitdaging: kaarten inladen
Vervang het paneel .bestandskaart in index.html door deze uitgebreidere
versie:
| |
Voeg daarna deze functie toe aan script.js:
| |
Kies het bestand mijn-flashcards.json dat je eerder hebt gedownload. De
trainer bewaart de ingeladen kaarten ook meteen in de browser.
Let op: kies alleen een flashcardbestand dat met deze trainer is gemaakt. Bij een ander bestand kan de trainer een foutmelding geven.
Nog meer ideeën
Kies een uitbreiding die bij jou past:
- Toon
Kaart 2 van 5onder de kaart. - Maak een knop voor de vorige kaart.
- Geef ieder schoolvak een eigen kleur.
- Voeg de knoppen Goed en Nog oefenen toe.
- Houd bij hoeveel antwoorden je goed had.
- Laat de kaarten in een willekeurige volgorde zien.
- Maak een knop waarmee je alle opgeslagen kaarten wist.
- Geef een duidelijke foutmelding als iemand het verkeerde bestand inlaadt.
Klaar
Je hebt een website gebouwd met drie talen:
- HTML voor de onderdelen op de pagina;
- CSS voor het ontwerp en de draaiende kaart;
- JavaScript voor de vragen, knoppen en het bewaren.
Je kunt de trainer vullen met Engelse woorden, tafels, topografie of iets anders dat jij wilt oefenen.