How to lock the vertical movement of Triangle using FabricJS?

In this tutorial, we are going to learn how to lock the vertical movement of a Triangle using FabricJS. Just as we can specify the position, colour, opacity and dimension of a triangle object in the canvas, we can also specify whether we want it to move only in the X-axis. This can be done by using the lockMovementY property.

Syntax

new fabric.Triangle({ lockMovementY: Boolean }: Object)

Parameters

  • Options (optional) ? This parameter is an Object which provides additional customizations to our triangle. Using this parameter, properties such as colour, cursor, stroke width, and a lot of other properties can be changed related to the object of which lockMovementY is a property.

Options Keys

  • lockMovementY ? 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 vertical direction.

Example 1: Default Movement Behavior

Let's see a code example to understand how we can move our triangle object in the X-axis or the Y-axis freely when lockMovementY 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 Triangle object in the canvas</h2>
   <p>You can select the triangle and drag it around. Observe that you can move the object in both horizontal and vertical 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 triangle object
      var triangle = new fabric.Triangle({
         left: 105,
         top: 70,
         width: 90,
         height: 80,
         fill: "#ffc1cc",
         stroke: "#fbaed2",
         strokeWidth: 5,
      });

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

In this example, you can select and drag the triangle in any direction. Both horizontal and vertical movements are allowed by default.

Example 2: Locking Vertical Movement

In this example, we will see how we can lock the vertical movement of a triangle object. By assigning the lockMovementY property a 'true' value, we essentially prevent movement in the vertical 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 lockMovementY as key with 'true' value</h2>
   <p>You can select and drag around the triangle to see that movement in y-direction is no longer allowed.</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 triangle object
      var triangle = new fabric.Triangle({
         left: 105,
         top: 70,
         width: 90,
         height: 80,
         fill: "#ffc1cc",
         stroke: "#fbaed2",
         strokeWidth: 5,
         lockMovementY: true,
      });

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

Notice that when you try to drag the triangle, it can only move horizontally. The vertical movement is completely restricted due to the lockMovementY: true property.

Key Points

  • lockMovementY is a Boolean property that controls vertical movement
  • Setting it to true prevents the object from moving up or down
  • Horizontal movement remains unaffected
  • This property is useful for creating UI elements that should only move along one axis

Conclusion

The lockMovementY property in FabricJS provides precise control over triangle movement by restricting vertical motion while preserving horizontal freedom. This is particularly useful for creating constrained interactive elements.

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

202 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements