Sobes.tech
Middle

Каква е разликата между Canvas и SVG?

sobes.tech AI

Отговор от AI

Canvas е растров API за рисуване на графика на живо с помощта на JavaScript. Той рисува пиксели върху платното.

SVG (Мащабируема векторна графика) е XML формат за описание на двумерна векторна графика. Той описва фигури, линии, текст и др.

Основни разлики:

  • Основи: Canvas — пиксели, SVG — вектори (математически описания).
  • Начин на рисуване: Canvas — императивен (команди за рисуване), SVG — декларативен (описание на елементи).
  • Мащабиране: Canvas се мащабира с загуба на качество (растер), SVG — без загуба на качество (вектор).
  • Производителност: Canvas е по-подходящ за динамична графика, анимации, игри. SVG — за статична, сложна графика, диаграми.
  • Достъпност: Елементите на SVG са достъпни чрез DOM, могат да се променят с CSS и JavaScript. Canvas рисува на пикселен ниво, отделните елементи не са достъпни.
  • Интерактивност: Интерактивността в SVG е вградена на ниво елементи. В Canvas трябва да следите събитията на мишката/докосването и да определяте към кои пиксели са приложени.
  • Формат: Canvas — елемент <canvas> и API на JavaScript. SVG — самостоятелен XML формат, който може да се вмъква директно в HTML или да се използва като файл (.svg).

Пример за създаване на кръг:

// 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>