Ik wil iets bereiken d.m.v. Javascript wat volgens mij toch wel makkelijk moet kunnen.
Ik heb bijvoorbeeld een div met
<div data-x="0" data-y="1500">
// inhoud
</div>
Aan de hand van de data-x en data-y wil ik een lijn van div naar div toe tekenen, een soort van timeline moet het voorstellen. Is dit mogelijk met canvas zonder dat ik voor elke div aparte waardes erin moet zetten maar dat hij elke div afzonderlijk afgaat en een lijn van->naar zet automatisch? zo ja.. hoe doe ik dit ?
Ja, data attributes kun je lezen doormiddel van de dataset object van een element:
[code lang=js]
var divs = document.getElementsByTagName('div');
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var prevCoord = {};
for (var i = -1; div = divs[++i]; ) {
if (div.dataset.x && div.dataset.y) {
var x = parseInt(div.dataset.x);
var y = parseInt(div.dataset.y);
if ({} !== prevCoord) {
ctx.start()
ctx.moveTo(prevCoord.x, prevCoord.y);
ctx.lineTo(x, y);
ctx.end()
ctx.line()
}
Wouter dit is bijna wat ik wil.. enkel zou ik het kunnen bereiken zonder de data-origin erin?
Ik weet niet of je bekend bent met impress.js ik wil hiervan een timeline maken zodat hij van div naar div een lijn trekt ( het liefst als het kan niet zo blokkig recht )
Ik heb de volgende functie hiervoor gevonden namelijk,
bezierCurveTo()
als het goed is kan je hier een array met die waardes ingeven alleen lukt dit me niet. zou je hier met me mee kunnen/willen kijken?
Deze hoek willen we lekker variabel maken, maar het moet natuurlijk niet uit de pan lopen (een lijn van (50,50) naar (100,100) moet geen controlpunten in (5000, 203) en (213, 3240) hebben). We maken dus een random nummer die veilig tussen de -50 en 50 ligt en tellen die voor control 1 van de x en y bij de start erbij en voor control 2 bij de end erbij (dus 4 random getallen tussen de -50 en 50). Resultaat: http://jsbin.com/mifut/2/edit