Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to create a canvas with a crosshair cursor using FabricJS?
In this article, we are going to create a canvas with a crosshair cursor using FabricJS. Crosshair is one of the native cursor styles available, which can be used in the FabricJS canvas too. FabricJS provides various types of cursors like default, all-scroll, crosshair, col-resize, row-resize, etc. which are reusing the native cursor under the hood. Each of these cursors look slightly different based on operating system.
Syntax
new fabric.Canvas(element: HTMLElement|String, { defaultCursor: String }: Object)
Parameters
-
element ? This parameter is the <canvas> element itself which can be derived using document.getElementById() or the id of the <canvas> element itself. The FabricJS canvas will be initialized on this element.
-
options (optional) ? This parameter is an Object which provides additional customizations to our canvas. Using this parameter color, cursor, border width and a lot of other properties can be changed related to the canvas, of which defaultCursor is a property with which we can set the type of cursor.
Example 1: Basic Crosshair Cursor
The defaultCursor property accepts a String which determines the name of the cursor to be used on the canvas. We will set it to crosshair to use the crosshair cursor. Let's see a code to create a canvas with a crosshair cursor in FabricJS.
<!DOCTYPE html>
<html>
<head>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
<h2>Canvas with crosshair cursor using FabricJS</h2>
<p>Bring the cursor inside the canvas to see the changed shape of cursor.</p>
<canvas id="canvas"></canvas>
<script>
//Initiate a canvas instance
var canvas = new fabric.Canvas("canvas", {
defaultCursor: "crosshair"
});
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);
</script>
</body>
</html>
Example 2: Crosshair Cursor with Canvas Objects
In this example, we will add a circle to the canvas, along with the crosshair cursor. This demonstrates how the crosshair cursor works when interacting with canvas objects.
<!DOCTYPE html>
<html>
<head>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
<h2>Canvas with crosshair cursor using FabricJS</h2>
<p>Here we have added a circle to the canvas along with the crosshair cursor</p>
<canvas id="canvas"></canvas>
<script>
//Initiate a canvas instance
var canvas = new fabric.Canvas("canvas", {
defaultCursor: "crosshair"
});
// Initiate a Circle instance
var circle = new fabric.Circle({
radius: 50,
fill: "green",
left: 100,
top: 100
});
// Render the circle in canvas
canvas.add(circle);
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);
</script>
</body>
</html>
Available Cursor Types
FabricJS supports various cursor types that you can use with the defaultCursor property:
- crosshair - Cross-shaped cursor for precise positioning
- default - Standard arrow cursor
- pointer - Hand cursor for clickable elements
- move - Four-directional arrow for dragging
- text - I-beam cursor for text input
- wait - Loading cursor
Conclusion
Setting a crosshair cursor in FabricJS is straightforward using the defaultCursor property. This cursor type is particularly useful for applications requiring precise positioning, drawing, or measurement tools on the canvas.
