Kubus

met interactie in HTML5, CSS en JavaScript

Draaiende kubus: De opdracht (00:01:57)

Met gebruikmaking van HTML, CSS3 en JavaScript, kan een kubus 3 dimensionaal worden weergegeven. In deze tutorialreeks wordt ook de nodige interactiviteit toegevoegd.

Draaiende kubus 1: de opbouw (00:16:19)

De opbouw van de kubus in HTML en CSS. Kenmerkende eigenschappen voor CSS zijn: perspective, transform-style: preserve-3d; (om de kubus met alle valkken in zijn geheel te kunnen draaien) en transform:rotateX en transform:translateX en natuurlijk de ondere 2 dicemnsies

Draaiende kubus 2: de kubus draaien (00:02:46)

Door in de transform: rotateX() de waarden aan te passen, draait de hele kubus.
Je kunt nu de kubus van alle kanten bekijken om te zien of alle zijvlakjes op hun plek staan.

Draaiende kubus 3: een functie om te draaien (00:09:26)

We zoeken hier naar een handige manier om de kubus te laten draaien door variabelen in een functie in te voeren.
Die functie kun je later dan herhaaldelijk aanroepen zodat je de kubus dan continue kunt verdraaien.

Draaiende kubus 4: doorlopend draaien (00:06:25)

Met de setInterval() functie kun je een functie herhaald aanroepen. Al zijn er wel betere methoden, met deze eenvoudige functie die je in aan een variabele toekent, heb je hier snel resultaat.

Draaiende kubus 5: de kubus stoppen en starten (00:05:20)

Met eventListeners, kun je acties koppelen aan de kubus.
Om te stoppen gebruik je clearInterval() en tussen de haakjes de variabele waarvan je de gezette interval wil verwijderen.

Draaiende kubus 6: een interface (paneel) (00:19:24)

Om meer interactie mogelijk te maken, voegen we een interface toe aan onze pagina. Deze moet over de kubus komen te liggen en te zijner tijd ook ingeschoven kunnen worden. Daarom geven we de interface een position: absolute. Om deze te centreren krijgt hij een breedte, een left- en top waarde 0 en geven we de margin-left en margin-right een waarde auto mee.
In de interface wordt een kop opgenomen evenals span's die de waarden van de rotaties over de assen gaat weergeven. Deze span's zouden een breedte moeten krijgen, maar omdat ze van huis uit een display-eigenschap inline hebben, zetten we display op inline-block. Hierdoor worden de span's even breed en krijgen we een strakkere layout.
De footer moet zich onderscheiden en we geven het display aan de onderkant ook afgeronde hoeken mee. In de footer komt een pijltje en die halen we uit een lijst met html-entiteiten: http://dev.w3.org/html5/html-author/charref

Draaiende kubus 7: de interface in- en uitschuiven (00:15:19)

Je kunt met eenvoudig JavaScript het paneel in- en uitschuiven. De footer wordt als knop gebruikt, die geven we dus een ID mee. Het paneel zelf heeft ook een ID. We kunnen dus variabelen maken, en deze vullen met de genoemde elementen uit de DOM.
We kunnen de knop weer een eventListener geven, die op het moment van klikken een functie aanroept. Deze functie past de top-waarde van het paneel aan, wijzigt zijn inhoud en past een boolean variabele aan, die bijhoud of het paneel nu is in- of uitgeschoven.

Draaiende kubus 8: rotatiegegevens uitvoeren (00:06:32)

Om de gegevens uit te voeren, lopen we weer langs een vertrouwd pad: via de ID's van de elementen, voer je ze in variabelen.
Deze variabelen geef je dan via de methode innerHTML() een waarde. Die wordt gehaald uit de variabelen, die telkens worden aangepast. Vlak na hun aanpassing voer je ze uit.

Draaiende kubus 9: terugbrengen met modulus (00:04:09)

De uitvoer leidt tot waarden die in de loop van de tijd sterk boven de 360 graden uitkomen. Mensen kunnen dat moeilijk interpreteren.
Gelukkig beschikt JavaScript over de 'modulus' methode. (%) Als je een getal als 17 modulus 5 neemt, (17%5) dat levert dat de restwaarde op die komt uit de deling van 17 door 5. Ons is het nu dus ook om die restwaarde te doen. We hebben na de ophoging dus slechts de modulus 360 van een waarde nodig: draaiZ = (draaiZ+1)%360;

Draaiende kubus 10: sliders uitlezen (00:05:21)

De sliders kunnen via JavaScript de waarde aannemen, die de variabelen van de draaiing van de kubus heeft. eerst geven we de sliders een maximale en minimale waarde en een ID om ze hanteerbaar te maken voor het script. Daar stoppen we ze in variabelen. Met de eigenschap .value kunnen we ze de waarde geven van de draai-variabelen.

Draaiende kubus 11: slider stuurt kubus (00:08:41)

De variabelen, die de sliders bevatten kunnen ook een eventListener krijgen, die reageert op het event 'change'. Je kunt dan een functie koppelen, die aan de draaivariabelen, de waarde van de sliders meegeeft. Het is praktisch om in die functie eerst de kubus te laten stoppen. Om de waarden uit de slider goed over te brengen meoten we er voor zorgen dat de waarde wordt omgezet naar een heel getal: dit is in dit geval de functie parseInt().

Draaiende kubus 12: prefix voor 3D (00:08:58)

De 3d-eigenschappen worden door enkele browsers slechts met een pre-fix verzorgd. Je kunt Brackets of andere editors uitbreiden met prefix-extensies. In dit geval is dat Autoprefixr.
Omdat ook met Javascript gestyled wordt, moet de style-eigenschap ook daar worden aangepast. Dit gaat met if-statements. Deze gaan na of de browser de transform-eigenschap kent (!=='undefined') voordat de stijl wordt uitgevoerd.



Na afloop de pagina online plaatsen en de link in ELO plaatsen.

Een eerdere tutorial