How to set the horizontal scale factor of Textbox using FabricJS?

In this tutorial, we are going to learn how to set the horizontal scale factor of a Textbox using FabricJS. We can customize, stretch or move around the text written in a textbox. In order to create a textbox, we will have to create an instance of fabric.Textbox class and add it to the canvas. Just as we can specify the position, colour, opacity and dimension of a textbox object in the canvas, we can also set the horizontal scale factor of a textbox object. This can be done by using the scaleX property.

Syntax

new fabric.Textbox(text: String, { scaleX : Number }: Object)

Parameters

  • text ? This parameter accepts a String which is the text string that we want to display inside our textbox.

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

Options Keys

  • scaleX ? This property accepts a Number value. The value that is assigned, determines the horizontal object scale factor. Its default value is 1.

Example 1

Default appearance when scaleX is not used

Let's see a code example that displays the appearance of our textbox object when the scaleX property is not used. By default, the horizontal scale factor of the textbox object is 1. scaleX determines the transformation that resizes an object along the X-axis.

<!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 appearance when scaleX is not used</h2>
   <p>You can see that there is no resizing along the x-axis</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 textbox object
      var textbox = new fabric.Textbox("Believe you can and you're halfway there.", {
         backgroundColor: "#fffff0",
         width: 400,
         left: 50,
         top: 70,
         fill: "violet",
         strokeWidth: 2,
         stroke: "blue",
         textAlign: "center",
      });
      
      // Add it to the canvas
      canvas.add(textbox);
   </script>
</body>
</html>

Example 2

Passing scaleX property as key

In this example, we are passing the scaleX property as a key with a value of 2. This means that the textbox object's scale factor in the horizontal direction is doubled.

<!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 scaleX property as key</h2>
   <p>You can see that the objects horizontal width has been doubled</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 textbox object
      var textbox = new fabric.Textbox("Believe you can and you're halfway there.", {
         backgroundColor: "#fffff0",
         width: 400,
         left: 50,
         top: 70,
         fill: "violet",
         strokeWidth: 2,
         stroke: "blue",
         textAlign: "center",
         scaleX: 2,
      });
      
      // Add it to the canvas
      canvas.add(textbox);
   </script>
</body>
</html>

Conclusion

The scaleX property in FabricJS allows you to control the horizontal scaling of textbox objects. Use values greater than 1 to stretch the textbox horizontally, or values less than 1 to compress it.

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

426 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements