Sobes.tech
Middle

Wat is het verschil tussen Canvas en SVG?

sobes.tech AI

Antwoord van AI

Canvas is een raster-API voor het tekenen van grafieken in realtime met JavaScript. Het tekent pixels op het canvas.

SVG (Scalable Vector Graphics) is een XML-formaat voor het beschrijven van tweedimensionale vectorafbeeldingen. Het beschrijft vormen, lijnen, tekst, enz.

Belangrijkste verschillen:

  • Basis: Canvas — pixels, SVG — vectoren (wiskundige beschrijvingen).
  • Tekenmethode: Canvas — imperatief (tekenopdrachten), SVG — declaratief (beschrijving van elementen).
  • Schaalbaarheid: Canvas schaalt met kwaliteitsverlies (raster), SVG schaalt zonder kwaliteitsverlies (vector).
  • Prestaties: Canvas is beter voor dynamische grafieken, animaties, games. SVG is beter voor statische, complexe grafieken, diagrammen.
  • Toegankelijkheid: SVG-elementen zijn toegankelijk via DOM, kunnen worden gewijzigd met CSS en JavaScript. Canvas tekent op pixelniveau, individuele elementen zijn niet toegankelijk.
  • Interactiviteit: Interactiviteit in SVG is ingebouwd op elementniveau. In Canvas moet je muis/touch-events volgen en bepalen op welke pixels ze hebben plaatsgevonden.
  • Formaat: Canvas is een <canvas>-element en JavaScript API. SVG is een zelfstandig XML-formaat dat direct in HTML kan worden ingebed of als bestand (.svg) kan worden gebruikt.

Voorbeeld van het maken van een cirkel:

// Canvas
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI);
ctx.fillStyle = 'red';
ctx.fill();
<!-- SVG -->
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
  <circle cx="100" cy="100" r="50" fill="red" />
</svg>