Structure > html
این متن هنوز کامل نیست و در حال بروزرسانی است. نسخه‌ی نهایی پس از تکمیل در دسترس قرار خواهد گرفت.

تصاویر و رسانه‌های چندرسانه‌ای

در عصر داده‌های بزرگ و تجربه کاربری بالا، نمایش مؤثر، سریع و سازگار با تمام دستگاه‌ها از تصاویر، صوت و ویدئو، به عنوان یکی از مهم‌ترین اصول توسعه وب مدرن مطرح می‌شود. این فصل به بررسی جامع و تخصصی عناصر چندرسانه‌ای در HTML5 می‌پردازد که شامل نمایش تصاویر هوشمندانه، پخش صوت و ویدئو با قابلیت تنظیم، و پشتیبانی از گرافیک برداری و ترسیمی است. این ابزارها نه تنها به افزایش خوانایی و جذابیت محتوا کمک می‌کنند بلکه بهینه‌سازی عملکرد، دسترسی‌پذیری و سازگاری با محیط‌های مختلف را نیز تضمین می‌نمایند.

6.1 نمایش و بهینه‌سازی تصاویر: از ساختار تا عملکرد

6.1.1 <img>: عنصر اصلی نمایش تصویر

این عنسر برای نمایش تصاویر در صفحات وب استفاده می شود.
<img 
 src="hero.jpg" 
 alt="تصویر معرفی دوره آموزشی برنامه‌نویسی"
 loading="lazy"
 decoding="async"
 srcset="hero-small.jpg 480w, hero-medium.jpg 800w, hero-large.jpg 1200w"
 sizes="(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw"
 />
alt باید مختصر دقیق و معنایی باشد. اگر تصویر توصیفی باشد، مثلا آدم در حال کدنویسی اما اگر تبلیغاتی یا بدون محتوا باشد alt="" استفاده شود. loading="lazy" باعث می‌شود تصاویر فقط هنگام نزدیک شدن به ناحیه دید (viewport) بارگذاری شوند - این امر به کاهش مصرف باند و بهبود LCP کمک می‌کند.

6.1.2 ***picture*** و ***source***: تصاویر واکنش‌گرا (Responsive Images)

<picture>
 <source media="(max-width: 768px)" srcset="mobile-hero.webp" type="image/webp">
 <source media="(max-width: 768px)" srcset="mobile-hero.jpg">
 <source media="(min-width: 769px)" srcset="desktop-hero.webp" type="image/webp">
 <source media="(min-width: 769px)" srcset="desktop-hero.jpg">
 <img 
  src="desktop-hero.jpg" 
  alt="عنوان دوره آموزشی"
  loading="lazy"
  decoding="async"
 />
</picture>
استفاده از WebP به جای JPG/PNG به دلیل فشرده‌سازی بالا و کیفیت بهتر توصیه می‌شود. از type="image/webp" برای مشخص کردن فرمت استفاده کنید. اگر مرورگر WebP پشتیبانی نکند تصویر JPG به صورت خودکار بارگذاری می‌شود.

6.1.3 بهینه‌سازی عملکرد: پیش‌بارگذاری و مدیریت بار

تصاویر بزرگ بدون srcset و sizes می‌توانند مصرف باند را ۲–۳ برابر افزایش دهند. استفاده از loading="lazy" می‌تواند زمان بارگذاری اولیه صفحه را تا ۴۰٪ کاهش دهد.

6.2 صوت و ویدئو در صفحات وب: پخش هوشمندانه و قابلیت تنظیم

6.2.1 <video>: پخش ویدئو در صفحه

این عنصر برای نمایش ویدئوهای داخلی یا خارجی استفاده می‌شود.
<video 
 controls 
 autoplay 
 muted 
 loop 
 poster="preview.jpg"
 preload="metadata"
 playsinline
 >
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  <track kind="captions" src="subtitles.vtt" srclang="fa" label="زیرنویس فارسی">
  <p>مرورگر شما از پخش ویدئو پشتیبانی نمی‌کند.</p>
</video>
autoplay فقط با muted مجاز است. استفاده از autoplay بدون صدای مسدود شده می‌تواند به عنوان "تبلیغات مزاحم" شناخته شود.

6.2.2 <audio>: پخش صوت

<audio controls preload="metadata">
 <source src="podcast.mp3" type="audio/mpeg">
 <source src="podcast.ogg" type="audio/ogg">
 <p>مرورگر شما از پخش صوت پشتیبانی نمی‌کند.</p>
</audio>

6.2.3 <track>: زیرنویس و ردیف‌های مرتبط

این عنصر برای اضافه کردن زیرنویس، توضیحات، یا ردیف‌های تفسیری به ویدئو / صوت استفاده می‌شود.
<track 
 kind="captions" 
 src="subtitles-fa.vtt" 
 srclang="fa" 
 label="زیرنویس فارسی"
 default
/>
زیرنویس‌های فارسی با srclang="fa" و label مناسب به کاربران نابینا و گفتاری کمک می‌کنند.

6.3 گرافیک برداری و گرافیک پیکسلی: از SVG تا Canvas

6.3.1 گرافیک برداری با <svg>

<svg> برای نمایش گرافیک‌های برداری Vector Graphics استفاده می‌شود.
<svg width="100" height="100" viewBox="0 0 100 100">
 <circle cx="50" cy="50" r="40" fill="#3498db" />
 <text x="50" y="55" text-anchor="middle" fill="white" font-size="12">SVG</text>
</svg>
برای آیکون‌ها از <svg> داخلی استفاده کنید تا از کاهش تعداد درخواست‌های HTTP جلوگیری شود.
از viewBox برای نمایش صحیح گرافیک در دستگاه‌های مختلف استفاده کنید.

6.3.2 گرافیک ترسیمی با <canvas>

<canvas> یک فضای ترسیمی پیکسلی است که با JavaScript کنترل می‌شود.
<canvas id="myCanvas" width="400" height="300">
 <p>مرورگر شما از <code><canvas></code> پشتیبانی نمی‌کند.</p>
</canvas>
  
<script>
 const canvas = document.getElementById('myCanvas');
 const ctx = canvas.getContext('2d');
 ctx.fillStyle = '#e74c3c';
 ctx.fillRect(50, 50, 200, 100);
</script>
همیشه یک محتوای جایگزین (fallback) درون <canvas> قرار دهید. اگر JS غیرفعال باشد محتوای جایگزین نمایش داده می‌شود. اگر مرورگر Canvas پشتیبانی نکند متن یا تصویر جایگزین به کاربر نمایش داده می‌شود.
یک صفحه وب موفق فقط با زیبایی ظاهری نیست بلکه با استفاده هوشمندانه از رسانه‌ها، بهینه‌سازی عملکرد، و مدیریت چندرسانه‌ای به صورت معنایی و دسترسی‌پذیر ساخته می‌شود. این فصل پایه‌ای برای نوشتن محتوای چندرسانه‌ای معتبر، سریع و متناسب با استانداردهای جهانی است.



بعدی قبلی