День 8 JavaScript 30 Веса Боса познакомил меня с HTML5 Canvas, который представляет собой API, позволяющий вам рисовать дизайны на веб-странице как статически, так и динамически. Он также может делать анимацию. Бос сделал простое приложение для динамического рисования и не занимался анимацией.

Если вам нужен более полный курс по HTML 5 Canvas, посмотрите Ускоренный курс HTML5 Canvas Брэда Тревези на YouTube.

Для начала нам нужно получить доступ к API. Это делается в теле HTML-кода. Также задается размер полотна.

<canvas id="draw" width="800" height="800">/canvas>

Теперь в тегах script Бос устанавливает контексты холста.

const canvas = document.querySelector('#draw');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
ctx.strokeStyle ='#BADA55';
ctx.lineJoin = 'round';
ctx.lineCap = 'round';
ctx.lineWidth = 100;
ctx.globalCompositeOperation = 'multiply'; //blend mode

Добавление прослушивателей событий для обнаружения движения мыши.

canvas.addEventListener('mousemove',draw);
canvas.addEventListener('mouseup', ()=> isDrawing = false);
canvas.addEventListener('mouseout', ( )=> isDrawing = false);

Передача события в функцию.

function draw(e) {
   if(!isDrawing) return; //stop function
   ctx.strokeStyle = `hsl(${hue}, 100%, 50%)`; //color spectrum
   ctx.beginPath(); //start drawing 
   ctx.moveTo(lastX, lastY);  //start drawing from
   ctx.lineTo(e.offsetX, e.offsetY);  //go to
   ctx.stroke(); 
   [lastX, lastY]=[e.offsetX,e.offsetY]; //resests start point
   hue++; //increments hue setting
   if(hue >= 360){
      hue = 0; //resets hue
   }
   if (ctx.lineWidth >= 100 || ctx.lineWidth <= 1){
      direction = !direction;
   }  //increments line width
    if(direction){
       ctx.lineWidth++;
    }else {
       ctx.lineWidth--;
    }  //line width increments with directional change
}

HTML5 Canvas в новинку для меня. Я с нетерпением жду, чтобы узнать больше и создать что-то интересное в ближайшее время.

Посмотрите другие посты из этой серии.