Middle
Jaký je rozdíl mezi Canvas a SVG?
sobes.tech AI
Odpověď od AI
Canvas je rastrové API pro kreslení grafiky v reálném čase pomocí JavaScriptu. Kreslí pixely na plátno.
SVG (Scalable Vector Graphics) je formát XML pro popis dvourozměrné vektorové grafiky. Popisuje tvary, čáry, text atd.
Hlavní rozdíly:
- Základ: Canvas — pixely, SVG — vektory (matematické popisy).
- Způsob kreslení: Canvas — imperativní (příkazy kreslení), SVG — deklarativní (popis prvků).
- Změna velikosti: Canvas se zvětšuje se ztrátou kvality (rastrové), SVG se zvětšuje bez ztráty kvality (vektorové).
- Výkon: Canvas je vhodnější pro dynamickou grafiku, animace, hry. SVG je vhodnější pro statickou, složitou grafiku, diagramy.
- Přístupnost: Elementy SVG jsou přístupné přes DOM, lze je měnit pomocí CSS a JavaScriptu. Canvas kreslí na pixelové úrovni, jednotlivé prvky nejsou přístupné.
- Interaktivita: Interaktivita v SVG je vestavěná na úrovni prvků. Na Canvas je třeba sledovat události myši/touch a určit, na které pixely se vztahují.
- Formát: Canvas je prvek
<canvas>a API JavaScriptu. SVG je samostatný XML formát, který lze přímo vložit do HTML nebo použít jako soubor (.svg).
Příklad tvorby 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>