How to flip a Rectangle horizontally using FabricJS?

In this tutorial, we are going to learn how we can flip a Rectangle object horizontally using FabricJS. Rectangle is one of the various shapes provided by FabricJS. In order to create a rectangle, we will have to create an instance of fabric.Rect class and add it to the canvas. We can flip a rectangle object horizontally using the flipX property.

Syntax

new fabric.Rect({ flipX: Boolean }: Object)

Parameters

  • Options (optional) ? This parameter is an Object which provides additional customizations to our rectangle. 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 flipX is a property.

flipX Property

  • flipX ? This property accepts a Boolean value which allows us to flip an object horizontally. When set to true, the rectangle is mirrored along its vertical axis. When set to false or omitted, the rectangle maintains its default orientation.

Example 1: Default Orientation (flipX: false)

Let's see a code example that shows us the default orientation of a rectangle object in FabricJS. Since we are passing the flipX property a false value, the rectangle object will not be flipped horizontally.

<!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 flipX as key with a False value</h2>
   <p>You can see that the object is not flipped horizontally</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 rectangle object
      var rect = new fabric.Rect({
         left: 125,
         top: 90,
         width: 170,
         height: 70,
         borderColor: "purple",
         borderScaleFactor: 3,
         flipX: false,
      });

      // Create gradient fill
      rect.set(
         "fill",
         new fabric.Gradient({
            type: "linear",
            coords: { x1: 0, y1: 0, x2: 50, y2: 0 },
            colorStops: [
               { offset: 0, color: "pink" },
               { offset: 1, color: "blue" },
            ],
         })
      );

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

Example 2: Horizontal Flip (flipX: true)

In this example, we have a rectangle object of width 170 and height 70 with a horizontal linear gradient fill. As we apply the flipX: true property to the rectangle object, it flips horizontally and thus we see that the gradient has flipped as well.

<!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 the flipX property as key with a True value</h2>
   <p>You can see now that the object has flipped horizontally</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 rectangle object
      var rect = new fabric.Rect({
         left: 125,
         top: 90,
         width: 170,
         height: 70,
         borderColor: "purple",
         borderScaleFactor: 3,
         flipX: true,
      });

      // Create gradient fill
      rect.set(
         "fill",
         new fabric.Gradient({
            type: "linear",
            coords: { x1: 0, y1: 0, x2: 50, y2: 0 },
            colorStops: [
               { offset: 0, color: "pink" },
               { offset: 1, color: "blue" },
            ],
         })
      );

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

Key Differences

Property Value Behavior Gradient Direction
flipX: false Normal orientation Pink to Blue (left to right)
flipX: true Horizontally flipped Blue to Pink (left to right)

Conclusion

The flipX property in FabricJS provides a simple way to horizontally flip rectangle objects. Setting it to true mirrors the object along its vertical axis, which is particularly noticeable with gradients and asymmetric designs.

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

582 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements