How to fill rectangle with pattern with JavaScript?

Sometimes, we want to fill rectangle with pattern with JavaScript.

In this article, we’ll look at how to fill rectangle with pattern with JavaScript.

How to fill rectangle with pattern with JavaScript?

To fill rectangle with pattern with JavaScript, we can use d3.

For instance, we write:

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.3.0/d3.min.js"></script>

to add the d3 script.

Then we write:

const svg = d3.select("body").append("svg");

svg
  .append('defs')
  .append('pattern')
  .attr('id', 'diagonalHatch')
  .attr('patternUnits', 'userSpaceOnUse')
  .attr('width', 4)
  .attr('height', 4)
  .append('path')
  .attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
  .attr('stroke', '#000000')
  .attr('stroke-width', 1);

svg.append("rect")
  .attr("x", 0)
  .attr("width", 100)
  .attr("height", 100)
  .style("fill", 'orange');

svg.append("rect")
  .attr("x", 0)
  .attr("width", 100)
  .attr("height", 100)
  .attr('fill', 'url(#diagonalHatch)');

to create an svg element and append it to the body as its child with

const svg = d3.select("body").append("svg");

Then we write

svg
  .append('defs')
  .append('pattern')
  .attr('id', 'diagonalHatch')
  .attr('patternUnits', 'userSpaceOnUse')
  .attr('width', 4)
  .attr('height', 4)
  .append('path')
  .attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
  .attr('stroke', '#000000')
  .attr('stroke-width', 1);

to add the diagonal hatch pattern.

We add the width, height stroke, stroke-width, etc with attr.

We set the 'id' of the pattern so we can apply it later by referencing its ID.

Next, we add the rectangle with

svg.append("rect")
  .attr("x", 0)
  .attr("width", 100)
  .attr("height", 100)
  .style("fill", 'orange');

And we set width, height and fill of the rectangle with attr.

Finally, we append the diagonal hatch pattern we created with

svg.append("rect")
  .attr("x", 0)
  .attr("width", 100)
  .attr("height", 100)
  .attr('fill', 'url(#diagonalHatch)');

We call attr with 'fill' and 'url(#diagonalHatch)' to apply the diagonalHatch pattern we created earlier.

Conclusion

To fill rectangle with pattern with JavaScript, we can use d3.