SVG المضمّن في مقابل img وobject
اختيار طريقة تضمين SVG المناسبة لحالة الاستخدام
SVG المضمّن في مقابل img وobject درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
ثلاث طرق لتضمين SVG
يمكن تضمين SVG (Scalable Vector Graphics) بثلاث طرق:
<img src="icon.svg">— بسيط، وقابل للتخزين المؤقت، ومن دون وصول إلى JS/CSS<object data="chart.svg">— تفاعل مضمّن، مع مستند منفصل- SVG مضمّن داخل HTML — وصول كامل إلى CSS/JS، ومن دون طلب إضافي
SVG عبر img src
الطريقة الأبسط: أشر إلى SVG باعتباره صورة:
<img src="logo.svg" alt="Company logo" width="120" height="40">
<!-- Pros: simple, cached by browser, clean HTML -->
<!-- Cons: cannot style with CSS, no JS interaction,
cannot use SVG filters or animations from CSS -->SVG عبر background-image في CSS
استخدم SVG كخلفية CSS للأيقونات الزخرفية:
.icon-check {
background-image: url('/icons/check.svg');
background-size: contain;
background-repeat: no-repeat;
width: 1rem;
height: 1rem;
}
<!-- Decorative: not in accessibility tree, no alt text needed -->SVG عبر عنصر object
ضمّن SVG باستخدام <object> لإنشاء SVG تفاعلي:
<object
type="image/svg+xml"
data="interactive-chart.svg"
width="800"
height="400"
aria-label="Interactive revenue chart"
>
<!-- Fallback: -->
<img src="chart-static.png" alt="Revenue chart">
</object>
<!-- SVG can have its own scripts
SVG document is somewhat isolated from parent page -->SVG مضمّن
ضمّن SVG مباشرةً في HTML للتحكم الكامل:
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
aria-hidden="true"
focusable="false"
>
<path d="M12 2L2 7l10 5 10-5-10-5z"/>
<path d="M2 17l10 5 10-5"/>
</svg>مزايا SVG المضمّن
لماذا تستخدم SVG المضمّن:
- تنسيق كامل باستخدام CSS:
fillوstrokeوالانتقالات والتحريكات - تفاعل JavaScript: تحديد عناصر SVG والاستماع إلى الأحداث
- currentColor: توريث اللون من CSS الخاص بالعنصر الأب
- من دون طلب HTTP إضافي
- يمكن أن يكون جزءًا من شجرة إمكانية الوصول باستخدام role وtitle
عيوب SVG المضمّن
عيوب SVG المضمّن:
- يصبح ملف HTML أكبر
- لا يخزّنه المتصفح مؤقتًا بشكل منفصل
- لا يمكن إعادة استخدام SVG نفسه بسهولة في صفحات متعددة من دون تكراره
- تكرار الشيفرة عند تكرار الأيقونات
استخدام عنصر use لإنشاء sprite
عرّف أيقونات SVG مرة واحدة، ثم أشر إليها باستخدام <use>:
<!-- Icon sprite (often hidden): -->
<svg style="display:none">
<symbol id="icon-close" viewBox="0 0 24 24">
<path d="M18 6L6 18M6 6l12 12"/>
</symbol>
<symbol id="icon-check" viewBox="0 0 24 24">
<path d="M20 6L9 17l-5-5"/>
</symbol>
</svg>
<!-- Use the icons: -->
<svg aria-hidden="true"><use href="#icon-close"/></svg>
<svg aria-hidden="true"><use href="#icon-check"/></svg>SVG متاح
اجعل SVG المضمّن متاحًا:
<!-- Informative SVG: -->
<svg role="img" aria-labelledby="svg-title">
<title id="svg-title">Revenue growth chart Q1-Q4 2024</title>
<!-- chart paths -->
</svg>
<!-- Decorative SVG: -->
<svg aria-hidden="true" focusable="false">
<!-- decorative paths -->
</svg>
<!-- focusable="false" needed for IE to prevent tab focus -->حيلة currentColor
استخدم currentColor لتوريث لون النص من CSS:
<button class="btn btn-primary">
<svg aria-hidden="true" width="16" height="16">
<path fill="currentColor" d="M10 6H6v4H2v4h4v4h4v-4h4v-4h-4V6z"/>
</svg>
Add Item
</button>
<!-- fill="currentColor" inherits the button's text color
When button is hovered/focused, icon color changes too
No need for separate icon color rules -->اختبار سريع
ما الميزة الرئيسية لـ SVG المضمّن مقارنةً باستخدام SVG عبر img src؟
مراجعة: تضمين SVG
أساسيات تضمين SVG:
<img src>— بسيط، ومن دون وصول إلى CSS/JS، وقابل للتخزين المؤقت- background-image في CSS — للعناصر الزخرفية فقط
<object data>— SVG تفاعلي، ومعزول نسبيًا- SVG مضمّن — تحكم كامل في CSS/JS، ومن دون طلب إضافي
- SVG sprite باستخدام
<symbol>+<use>— إعادة استخدام فعالة
الأسئلة الشائعة
هل درس «SVG المضمّن في مقابل img وobject» مجاني؟
نعم — نص درس «SVG المضمّن في مقابل img وobject» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «SVG المضمّن في مقابل img وobject»؟
اختيار طريقة تضمين SVG المناسبة لحالة الاستخدام تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «SVG المضمّن في مقابل img وobject»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- SVG المضمّن في مقابل img وobject
- أشكال SVG الأساسية: rect وcircle وpath
- viewBox في SVG والتحجيم المتجاوب
- تحريك SVG باستخدام CSS وSMIL