Cette page est affichée en anglais. Une traduction française est en cours.
ScriptsMay 3, 2026·3 min de lecture

Fabric.js — Powerful HTML5 Canvas Library for Interactive Graphics

A feature-rich JavaScript library that provides an interactive object model on top of the HTML5 canvas element, enabling drawing, manipulation, and animation of shapes, images, and text.

Introduction

Fabric.js provides an interactive object model on top of the HTML5 canvas element. It simplifies canvas programming by offering a rich set of drawing primitives, SVG parsing, and an event-driven interaction layer that raw canvas API lacks.

What Fabric.js Does

  • Renders shapes, images, text, and paths with a persistent object graph
  • Enables selection, grouping, scaling, rotation, and drag-and-drop interactions
  • Parses SVG files and converts them into editable canvas objects
  • Supports free-hand drawing, clipping, filters, and animations
  • Serializes the canvas state to JSON and back for persistence

Architecture Overview

Fabric.js wraps the native CanvasRenderingContext2D behind an object-oriented layer. Each visual element is a FabricObject subclass tracked in an ordered collection. A centralized event bus dispatches pointer, selection, and modification events. Rendering uses a two-canvas strategy: a main display canvas and a hidden cache canvas for per-object bitmap caching, enabling efficient redraws.

Self-Hosting & Configuration

  • Install via npm, yarn, or load from a CDN script tag
  • Import the full bundle or use tree-shakeable ES module imports
  • Configure canvas dimensions, background color, and selection styles via constructor options
  • Enable or disable features like object caching, retina scaling, and touch support
  • Works in Node.js via jsdom or node-canvas for server-side rendering

Key Features

  • SVG-to-canvas and canvas-to-SVG bidirectional conversion
  • Built-in image filters (brightness, contrast, blur, pixelate, and more)
  • Free-drawing brush system with configurable width, color, and pattern
  • Robust serialization with toJSON/loadFromJSON for save and restore
  • Active community maintaining TypeScript definitions and v6 modular architecture

Comparison with Similar Tools

  • Konva — scene-graph canvas lib focused on high-performance layered rendering; less SVG support
  • Paper.js — vector graphics scripting with path booleans; smaller interaction model
  • PixiJS — WebGL-first 2D renderer for games; no built-in object manipulation UI
  • Canvas API (raw) — maximum control but no object persistence or event handling
  • SVG DOM — native vector but performance degrades with thousands of elements

FAQ

Q: Can Fabric.js render on the server? A: Yes. Use node-canvas or jsdom to instantiate a Fabric canvas in Node.js for thumbnails or exports.

Q: Does it support WebGL? A: Fabric.js uses Canvas2D by default. Image filters optionally run through a WebGL backend for GPU acceleration.

Q: How large can the canvas be? A: Browser limits apply (typically 4096-16384px per side). Fabric supports virtual canvas and viewport transforms for pan/zoom over large areas.

Q: Is Fabric.js suitable for real-time collaborative editing? A: Yes. Serialize object state as JSON, transmit deltas over WebSocket, and apply them on remote canvases.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires