Middle
Aký je rozdiel medzi Canvas a SVG?
sobes.tech AI
Odpoveď od AI
Canvas je rastrové API na kreslenie grafiky v reálnom čase pomocou JavaScriptu. Kreslí pixely na plátno.
SVG (Škálovateľná vektorová grafika) je formát XML na opis dvojrozmernej vektorovej grafiky. Opisuje tvary, čiary, text atď.
Hlavné rozdiely:
- Základ: Canvas — pixely, SVG — vektory (matematické opisy).
- Spôsob kreslenia: Canvas — imperatívny (príkazy na kreslenie), SVG — deklaratívny (popis prvkov).
- Zväčšenie: Canvas sa zväčšuje so stratou kvality (rastrové), SVG sa zväčšuje bez straty kvality (vektorové).
- Výkon: Canvas je vhodnejší pre dynamickú grafiku, animácie, hry. SVG je vhodnejší pre statickú, zložitú grafiku, diagramy.
- Prístupnosť: Elementy SVG sú prístupné cez DOM, môžu sa meniť pomocou CSS a JavaScriptu. Canvas kreslí na úrovni pixelov, jednotlivé prvky nie sú prístupné.
- Interaktivita: Interaktivita v SVG je zabudovaná na úrovni prvkov. Na Canvas je potrebné sledovať udalosti myši/touch a určiť, na ktoré pixely sa vzťahujú.
- Formát: Canvas je element
<canvas>a API JavaScriptu. SVG je samostatný XML formát, ktorý možno priamo vložiť do HTML alebo použiť ako súbor (.svg).
Príklad vytvorenia kruhu:
// 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>