کدلپر - مرجع جامع آموزش برنامه‌نویسی

All Right Reserved © 2026 Codoloper

background codoloper

گرافیک SVG در HTML

خانه

گرافیک SVG در HTML

SVG (گرافیک برداری مقیاس‌پذیر)

SVG گرافیک مبتنی بر بردار را در قالب XML تعریف می‌کند که می‌تواند مستقیماً در صفحات HTML جای‌گذاری شود. گرافیک‌های SVG مقیاس‌پذیر هستند و در صورت بزرگ‌نمایی یا تغییر اندازه، هیچ کیفیتی را از دست نمی‌دهند:

SVG

SVG توسط تمام مرورگرهای اصلی پشتیبانی می‌شود.


SVG چیست؟

  • SVG مخفف Scalable Vector Graphics (گرافیک برداری مقیاس‌پذیر) است.

  • SVG برای تعریف گرافیک مبتنی بر بردار برای وب استفاده می‌شود.

  • SVG گرافیک را در فرمت XML تعریف می‌کند.

  • هر عنصر و ویژگی در فایل‌های SVG را می‌توان متحرک‌سازی کرد.

  • SVG یک توصیه‌نامه از کنسرسیوم وب جهانی (W3C) است.

  • SVG با استانداردهای دیگر مانند CSS، DOM، XSL و جاوااسکریپت یکپارچه می‌شود.


عنصر <svg>

عنصر <svg> در HTML یک محفظه (container) برای گرافیک SVG است. SVG متدهای مختلفی برای ترسیم مسیرها، مستطیل‌ها، دایره‌ها، چندضلعی‌ها، متن و موارد بسیار دیگر دارد.


دایره در SVG

مثال

 
<!DOCTYPE html>
<html>
  <body>
    <svg width="100" height="100">
      <circle
        cx="50"
        cy="50"
        r="40"
        stroke="green"
        stroke-width="4"
        fill="yellow"
      />
    </svg>
  </body>
</html>

مستطیل در SVG

مثال

<svg width="400" height="120">
  <rect x="10" y="10" width="200" height="100" stroke="red" stroke-width="6" fill="blue" />
</svg>


مستطیل در SVG با شفافیت و گوشه‌های گرد

مثال

<svg width="400" height="180">
  <rect x="50" y="20" rx="20" ry="20" width="150" height="150"
  style="fill:red;stroke:black;stroke-width:5;opacity:0.5" />
</svg>


ستاره در SVG

مثال

<svg width="300" height="200">
  <polygon points="100,10 40,198 190,78 10,78 160,198"
  style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>


بیضی گرادیان و متن در SVG

SVG

<svg height="130" width="500">
  <defs>
    <linearGradient id="grad1">
      <stop offset="0%" stop-color="yellow" />
      <stop offset="100%" stop-color="red" />
    </linearGradient>
  </defs>
  <ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
  <text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">
    SVG
  </text>
  Sorry, your browser does not support inline SVG.
</svg>


تفاوت‌های بین SVG و Canvas

SVG زبانی برای توصیف گرافیک دوبعدی در XML است، در حالی که Canvas گرافیک دوبعدی را به صورت پویا (on the fly) (با جاوااسکریپت) ترسیم می‌کند. SVG مبتنی بر XML است، به این معنی که هر عنصر در DOM مربوط به SVG در دسترس است. شما می‌توانید کنترل‌کننده‌های رویداد (event handlers) جاوااسکریپت را به گرافیک‌های SVG متصل کنید. در SVG، هر شکل ترسیم‌شده به عنوان یک شیء در حافظه باقی می‌ماند. اگر ویژگی‌های یک شیء SVG تغییر کند، مرورگر می‌تواند به طور خودکار آن شکل را دوباره رندر کند. Canvas به صورت پیکسل به پیکسل رندر می‌شود. در canvas، هنگامی که گرافیک ترسیم شد، توسط مرورگر فراموش می‌شود. اگر موقعیت آن نیاز به تغییر داشته باشد، کل صحنه باید دوباره ترسیم شود، از جمله هر شیئی که ممکن است توسط آن گرافیک پوشانده شده باشد.


مقایسه SVG و Canvas

جدول زیر برخی از تفاوت‌های مهم بین Canvas و SVG را نشان می‌دهد:

SVGCanvas
مستقل از رزولوشنوابسته به رزولوشن
پشتیبانی از کنترل‌کننده‌های رویدادعدم پشتیبانی از کنترل‌کننده‌های رویداد
قابلیت‌های خوب برای رندر متنقابلیت‌های ضعیف برای رندر متن
رندر کند در صورت پیچیده بودنمی‌توانید تصویر نهایی را با فرمت .png یا .jpg ذخیره کنید
برای برنامه‌های بازی مناسب نیستبرای بازی‌هایی با گرافیک سنگین کاملاً مناسب است