How to lock the horizontal movement of Line using FabricJS?

In this tutorial, we are going to learn how to lock the horizontal movement of a Line using FabricJS. A Line element is one of the basic elements provided in FabricJS. It is used for creating straight lines. Because line elements are geometrically one-dimensional and do not contain an interior, they are never filled. We can create a line object by creating an instance of fabric.Line, specifying the x and y coordinates of the line and adding it to the canvas. We can also specify whether we want the line object to move only in the Y-axis. This can be done by using the lockMovementX property.

Syntax

new fabric.Line(points: Array, { lockMovementX: Boolean }: Object)

Parameters

  • points ? This parameter accepts an Array of points which determines the (x1, y1) and (x2, y2) values, those being the x- and y-axis coordinates of the start and end of the line respectively.

  • options (optional) ? This parameter is an Object which provides additional customizations to our line object. Using this parameter origin, stroke width and a lot of other properties can be changed related to the object of which lockMovementX is a property.

Options Keys

  • lockMovementX ? This property accepts a Boolean value. If we assign it a 'true' value, then the object will no longer be able to move in the horizontal direction.

Default behaviour of a Line object in the canvas

Let's see a code example to understand how we can move our line object in the X-axis or the Y-axis freely when lockMovementX property is not assigned a 'true' value.

<!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>Default behaviour of a Line object in the canvas</h2>
   <p>
      Drag the line object across the x-axis and y-axis to see that movement is allowed in both directions
   </p>
   <canvas id="canvas"></canvas>
   <script>
      // Initiate a canvas instance
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);

      // Initiate a Line object
      var line = new fabric.Line([200, 100, 100, 40], {
         stroke: "blue",
         strokeWidth: 20,
      });

      // Add it to the canvas
      canvas.add(line);
   </script>
</body>
</html>

Passing lockMovementX as key with 'true' value

In this example, we will see how we can lock the horizontal movement of a line object. By assigning the lockMovementX property a 'true' value, we essentially cease movement in the horizontal direction.

<!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>Passing lockMovementX as key with 'true' value</h2>
   <p>
      Drag the line object across the x-axis and y-axis to see that movement is no longer allowed in the horizontal direction
   </p>
   <canvas id="canvas"></canvas>
   <script>
      // Initiate a canvas instance
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);

      // Initiate a Line object
      var line = new fabric.Line([200, 100, 100, 40], {
         stroke: "blue",
         strokeWidth: 20,
         lockMovementX: true,
      });

      // Add it to the canvas
      canvas.add(line);
   </script>
</body>
</html>

Key Differences

Property Value Horizontal Movement Vertical Movement
Default (no lockMovementX) undefined/false Allowed Allowed
lockMovementX true Locked Allowed

Conclusion

The lockMovementX property provides precise control over line object movement in FabricJS. Setting it to true restricts horizontal movement while preserving vertical movement capabilities.

Updated on: 2026-03-15T23:19:00+05:30

459 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements