This whiteboard is touch & mouse friendly. It fills the page width & height so you can draw on the entire page. Nothing special, just experimenting with touch, and thought I'd share.
A Pen by Slovak_Cat on CodePen.
This whiteboard is touch & mouse friendly. It fills the page width & height so you can draw on the entire page. Nothing special, just experimenting with touch, and thought I'd share.
A Pen by Slovak_Cat on CodePen.
| <head> | |
| <meta charset="utf-8" /> | |
| <title>HTML5 Canvas Drawing Board</title> | |
| <script type="text/JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js?ver=1.4.2"></script> | |
| </head> | |
| <body> | |
| <canvas id="myCanvas"> | |
| Sorry, your browser does not support HTML5 canvas technology. | |
| </canvas> | |
| </body> | |
| </html> |
| window.onload = function() { | |
| var myCanvas = document.getElementById("myCanvas"); | |
| var ctx = myCanvas.getContext("2d"); | |
| // Fill Window Width and Height | |
| myCanvas.width = window.innerWidth; | |
| myCanvas.height = window.innerHeight; | |
| // Set Background Color | |
| ctx.fillStyle="#fff"; | |
| ctx.fillRect(0,0,myCanvas.width,myCanvas.height); | |
| // Mouse Event Handlers | |
| if(myCanvas){ | |
| var isDown = false; | |
| var canvasX, canvasY; | |
| ctx.lineWidth = 5; | |
| $(myCanvas) | |
| .mousedown(function(e){ | |
| isDown = true; | |
| ctx.beginPath(); | |
| canvasX = e.pageX - myCanvas.offsetLeft; | |
| canvasY = e.pageY - myCanvas.offsetTop; | |
| ctx.moveTo(canvasX, canvasY); | |
| }) | |
| .mousemove(function(e){ | |
| if(isDown !== false) { | |
| canvasX = e.pageX - myCanvas.offsetLeft; | |
| canvasY = e.pageY - myCanvas.offsetTop; | |
| ctx.lineTo(canvasX, canvasY); | |
| ctx.strokeStyle = "#000"; | |
| ctx.stroke(); | |
| } | |
| }) | |
| .mouseup(function(e){ | |
| isDown = false; | |
| ctx.closePath(); | |
| }); | |
| } | |
| // Touch Events Handlers | |
| draw = { | |
| started: false, | |
| start: function(evt) { | |
| ctx.beginPath(); | |
| ctx.moveTo( | |
| evt.touches[0].pageX, | |
| evt.touches[0].pageY | |
| ); | |
| this.started = true; | |
| }, | |
| move: function(evt) { | |
| if (this.started) { | |
| ctx.lineTo( | |
| evt.touches[0].pageX, | |
| evt.touches[0].pageY | |
| ); | |
| ctx.strokeStyle = "#000"; | |
| ctx.lineWidth = 5; | |
| ctx.stroke(); | |
| } | |
| }, | |
| end: function(evt) { | |
| this.started = false; | |
| } | |
| }; | |
| // Touch Events | |
| myCanvas.addEventListener('touchstart', draw.start, false); | |
| myCanvas.addEventListener('touchend', draw.end, false); | |
| myCanvas.addEventListener('touchmove', draw.move, false); | |
| // Disable Page Move | |
| document.body.addEventListener('touchmove',function(evt){ | |
| evt.preventDefault(); | |
| },false); | |
| }; |
| * { | |
| margin: 0; | |
| padding: 0; | |
| } | |
| body, html { | |
| height: 100%; | |
| } | |
| #myCanvas { | |
| cursor: crosshair; | |
| position: fixed; | |
| } |