Skip to main content

HTML5 Canvas Change Mouse Cursor Style

To change mouse cursor with Konva framework you just need to listen events, where do you need to change the cursor, and apply new styles manually for Stage container.

Instructions: Mouseover each pentagon and see how cursor is changing

import Konva from 'konva';

const stage = new Konva.Stage({
  container: 'container',
  width: window.innerWidth,
  height: window.innerHeight,
});

const layer = new Konva.Layer();
stage.add(layer);

const pentagon1 = new Konva.RegularPolygon({
  x: 80,
  y: stage.height() / 2,
  sides: 5,
  radius: 30,
  fill: 'red',
  stroke: 'black',
  strokeWidth: 4,
});

pentagon1.on('mouseover', function (e) {
  e.target.getStage().container().style.cursor = 'pointer';
});
pentagon1.on('mouseout', function (e) {
  e.target.getStage().container().style.cursor = 'default';
});

const pentagon2 = new Konva.RegularPolygon({
  x: 180,
  y: stage.height() / 2,
  sides: 5,
  radius: 30,
  fill: 'green',
  stroke: 'black',
  strokeWidth: 4,
});

pentagon2.on('mouseover', function (e) {
  e.target.getStage().container().style.cursor = 'crosshair';
});
pentagon2.on('mouseout', function (e) {
  e.target.getStage().container().style.cursor = 'default';
});

const pentagon3 = new Konva.RegularPolygon({
  x: 280,
  y: stage.height() / 2,
  sides: 5,
  radius: 30,
  fill: 'blue',
  stroke: 'black',
  strokeWidth: 4,
});

pentagon3.on('mouseover', function (e) {
  e.target.getStage().container().style.cursor = 'move';
});
pentagon3.on('mouseout', function (e) {
  e.target.getStage().container().style.cursor = 'default';
});

layer.add(pentagon1);
layer.add(pentagon2);
layer.add(pentagon3);