یک بار در بازبینی یک پروژه‌ی وردپرسی، مدیر محصول از من پرسید «چرا این تگ <details> استفاده شده؟» و من برای دقایقی گیر کردم. آن روز فهمیدم که تسلط بر HTML، فقط دانستن <div> و <p> و <img> نیست. تگ‌های زیادی در HTML وجود دارند که هر کدام برای مسئله‌ای خاص طراحی شده‌اند و اگر آن‌ها را نشناسید، مجبور می‌شوید با چند لایه <div> و مقداری جاوااسکریپت، همان چیزی را بسازید که یک تگ واحد می‌توانست با یک خط انجام دهد. این مقاله، همان نقشه‌ای است که خودم بعد از آن تجربه روی دیوار ذهنم چسباندم: تمام تگ‌های پرکاربرد HTML، دسته‌بندی‌شده و همراه با کاربرد واقعی.

اگر در مسیر آموزش HTML از صفر هستید، این نوشته به‌عنوان یک مرجع سریع در کنار آن کار می‌کند: آن یکی ساختار و تفکر را می‌سازد، و این یکی فهرست کاربردی تگ‌ها را در اختیار شما می‌گذارد. مسیر بعدی هم آموزش CSS از صفر است که ظاهر را روی همین ساختار می‌نشاند.

چرا شناختن تگ‌های پرکاربرد HTML یک ضرورت است؟

در نگاه اول، HTML فقط مجموعه‌ای از تگ‌ها به‌نظر می‌رسد. اما تجربه‌ی ده‌ها پروژه به من نشان داده که انتخاب تگ درست، سه اثر هم‌زمان دارد:

  • اثر بر سئو: موتورهای جستجو معنای تگ‌ها را می‌فهمند. تگ <article> به گوگل می‌گوید این محتوا مستقل است، در حالی که یک <div class="post"> هیچ معنایی به گوگل نمی‌دهد. اگر با سئوی درون‌صفحه کار می‌کنید، این تفاوت‌ها مستقیم روی رتبه اثر می‌گذارند.
  • اثر بر دسترس‌پذیری: ابزارهایی مثل screen readerها از تگ‌های معنایی برای پیمایش صفحه استفاده می‌کنند. کاربر نابینا می‌تواند از Landmarkهای HTML برای جهش مستقیم به بخش‌های مختلف صفحه استفاده کند — چیزی که با div غیرممکن است. اگر روی دسترس‌پذیری حساس هستید، استانداردهای دسترس‌پذیری وب و WCAG چیست را ببینید.
  • اثر بر رفتار پیش‌فرض مرورگر: هر تگ، رفتار پیش‌فرضی دارد که مرورگر اعمال می‌کند. تگ <button> با Enter کار می‌کند، فوکوس می‌گیرد و به صفحه‌کلید پاسخ می‌دهد. یک <div> با onclick، هیچ‌کدام از این‌ها را ندارد و باید دستی اضافه شود. اگر به‌جای تگ درست از div استفاده کنید، عملاً دارید یک زبان را دوباره از صفر اختراع می‌کنید.

قاعده‌ای که در تیم‌ها به‌کار می‌برم: هر جا تگ بومی (native) برای یک هدف وجود دارد، از آن استفاده کنید. div و span آخرین گزینه‌ها هستند، نه اولین. همین قاعده، حجم کد، پیچیدگی جاوااسکریپت و باگ‌های دسترس‌پذیری را به‌طور محسوسی کاهش می‌دهد.

HTML به شما یک جعبه‌ابزار با ده‌ها ابزار مخصوص می‌دهد؛ استفاده از div برای همه‌چیز، مثل استفاده از چاقوی همه‌کاره برای همه‌ی کارهای خانه است — ممکن است، ولی هیچ‌وقت بهترین نتیجه را نمی‌دهد.

تگ‌های ساختاری: اسکلت هر سند HTML

هر سند HTML با یک ساختار پایه شروع می‌شود که بدون آن، مرورگر نمی‌داند با سند چطور رفتار کند:

تگنقشنکته‌ی مهم
<!DOCTYPE html>اعلام نسخه‌ی HTMLبدون آن، مرورگر به quirks mode می‌رود
<html>ریشه‌ی سندبا lang و dir برای فارسی
<head>اطلاعات متادیتاشامل title، meta، link
<body>محتوای مرئیهر چیزی که دیده می‌شود
<meta>اطلاعات درباره‌ی سندcharset، viewport، description
<title>عنوان صفحهدر نتایج گوگل و تب مرورگر دیده می‌شود
<link>اتصال به منابع بیرونیCSS، favicon، canonical
<script>کد جاوااسکریپتبا defer یا async
<style>CSS درون‌خطیبرای critical CSS

نکته‌ی ظریفی که در پروژه‌های فارسی زیاد دیده‌ام: نبود lang="fa" dir="rtl" روی <html>. بدون این‌ها، مرورگر در انتخاب فونت پیش‌فرض و در الگوریتم bidi (ترکیب متن فارسی و انگلیسی) اشتباه می‌کند و نتیجه، متنی با فاصله‌گذاری عجیب است. برای مطالعه‌ی این مسئله در چارچوب استانداردها، استانداردهای HTML و CSS را ببینید.

تگ‌های متن: از پاراگراف تا نقل‌قول و کد

تگ‌های متن، پرکاربردترین دسته در HTML هستند و دقیقاً همان‌جایی که معنای درست، اهمیت بیشتری پیدا می‌کند:

  • <h1> تا <h6>: تیترهای سطح‌دار. فقط یک <h1> در هر صفحه. ترتیب منطقی (h1 → h2 → h3) را رعایت کنید. برای نقش این ساختار در سئو، سئوی درون‌صفحه چیست را ببینید.
  • <p>: پاراگراف. برای متن‌های کوتاه از br به‌جای p استفاده نکنید؛ این یکی از پرتکرارترین اشتباهات تازه‌کارهاست.
  • <strong> و <em>: تأکید معنایی. screen readerها این‌ها را با لحن متفاوت می‌خوانند. در مقابل، <b> و <i> فقط ظاهری هستند.
  • <blockquote>: نقل‌قول بلوک. برای نقل‌قول کوتاه در متن، از <q> استفاده کنید که خودکار گیومه‌گذاری می‌کند.
  • <code> و <pre>: کد درون‌خطی و بلوک کد. ترکیب <pre><code> برای بلوک کد چندخطی استاندارد است.
  • <mark>: هایلایت متن. معنای دقیقش «مرتبط با جستجوی کاربر» است.
  • <time>: تاریخ یا زمان، با ویژگی datetime برای فرمت ماشین‌خوان.
  • <abbr>: خلاصه یا سرنام. با ویژگی title که معنی کامل را نشان می‌دهد.
  • <small>: متن جانبی مثل حق نسخه یا توضیح کوچک.
  • <br>: شکستن خط. فقط برای متن‌هایی مثل آدرس یا شعر، نه برای فاصله‌گذاری.
  • <hr>: جداکننده‌ی موضوعی. برای مرز بین دو موضوع، نه برای تزئین.

در پروژه‌ای که یک سایت محتوایی داشتیم، جایگزینی <div class="title"> با <h2> در ساختار مقالات، امتیاز سئوی درون‌صفحه را به‌طور محسوسی بالا برد و در گزارش Search Console، کلیک‌های ارگانیک در شش هفته دو برابر شد.

این دسته، قلب تجربه‌ی بصری و ناوبری سایت است. تگ‌های اصلی:

<a> — لینک

<a href="/blog/post/" target="_blank" rel="noopener">متن لینک</a>

نکات مهم: متن لینک معنادار باشد (نه «اینجا کلیک کنید»)، برای لینک‌های خارجی از rel="noopener" استفاده کنید، و برای لینک‌های داخلی target="_blank" را تنها زمانی بگذارید که واقعاً لازم است. برای مطالعه‌ی بیشتر، رفع خطای لینک در وردپرس.

<img> — تصویر

<img
  src="photo.webp"
  srcset="photo-400.webp 400w, photo-800.webp 800w"
  sizes="(max-width: 600px) 100vw, 50vw"
  alt="توضیح دقیق"
  width="800" height="450"
  loading="lazy">

چهار ویژگی که هر تصویر باید داشته باشد: alt معنادار، width و height برای جلوگیری از پرش چیدمان، و loading="lazy" برای تصاویر پایین صفحه. برای تصویر شاخص (LCP)، هرگز lazy استفاده نکنید. جزئیات در سئوی تصویر و Core Web Vitals چیست.

<picture> — کنترل کامل روی تصویر

<picture>
  <source srcset="hero.avif" type="image/avif">
  <source srcset="hero.webp" type="image/webp">
  <img src="hero.jpg" alt="Hero">
</picture>

وقتی می‌خواهید فرمت‌های مدرن را با fallback برای مرورگرهای قدیمی‌تر ترکیب کنید. جزئیات فرمت‌ها در بهترین فرمت تصویر وب و فشرده‌سازی تصاویر سایت.

<video> و <audio>

برای پخش رسانه بدون افزونه‌های خارجی. سه ویژگی مهم: controls، preload="metadata" و poster برای ویدیو. زیرنویس‌ها با <track> اضافه می‌شوند که برای دسترس‌پذیری ضروری است.

تگ‌های لیست: ul، ol، dl

سه نوع لیست در HTML وجود دارد و هر کدام معنای دقیقی دارند:

  • <ul>: لیست نامرتب. برای منو، لیست ویژگی‌ها، فهرست‌های ساده.
  • <ol>: لیست مرتب. برای مراحل، رتبه‌بندی، فهرست دستورالعمل.
  • <dl>: لیست تعاریف. برای واژه‌نامه، مشخصات محصول (نام + مقدار).

نکته‌ی مهمی که در پروژه‌ها زیاد دیده‌ام: منوهای ناوبری هم لیست هستند. استفاده از <ul> در منوها، نه‌فقط معنایی است، بلکه برای screen readerها امکان جهش سریع‌تر و شمارش تعداد آیتم‌ها را فراهم می‌کند. ساختار درست:

<nav aria-label="ناوبری اصلی">
  <ul>
    <li><a href="/">خانه</a></li>
    <li><a href="/about/">درباره ما</a></li>
    <li><a href="/contact/">تماس</a></li>
  </ul>
</nav>

تگ‌های جدول و کاربرد درست آن‌ها

جدول در HTML معنای دقیقی دارد: نمایش داده‌های جدولی. استفاده‌ی نادرست از جدول برای چیدمان، عادت بدی است که از دهه‌ی ۲۰۰۰ باقی مانده. تگ‌های اصلی:

  • <table> — ریشه‌ی جدول.
  • <thead> — بخش سربرگ.
  • <tbody> — بخش بدنه.
  • <tfoot> — بخش پانویس (مثل جمع کل).
  • <tr> — ردیف.
  • <th> — خانه‌ی سربرگ، با scope="col" یا scope="row".
  • <td> — خانه‌ی داده.
  • <caption> — عنوان جدول.

برای چیدمان، به‌جای جدول از فلکس باکس در CSS و گرید در CSS استفاده کنید. اگر روی پروژه‌ای وردپرسی کار می‌کنید، قالب وردپرس چیست توضیح می‌دهد چطور این تصمیم‌ها در قالب‌ها اعمال می‌شوند.

تگ‌های فرم: قلب تعامل کاربر با سایت

فرم‌ها پیچیده‌ترین بخش HTML هستند و بیشترین تعداد تگ اختصاصی را دارند:

  • <form> — ریشه‌ی فرم، با action و method.
  • <input> — فیلد ورودی، با انواع متعدد: text، email، tel، number، password، checkbox، radio، file، date، color و دیگران.
  • <label> — برچسب فیلد، با for که به id فیلد وصل می‌شود.
  • <textarea> — متن چندخطی.
  • <select> و <option> — لیست کشویی.
  • <button> — دکمه، با انواع submit، reset، button.
  • <fieldset> و <legend> — گروه‌بندی فیلدهای مرتبط.
  • <datalist> — پیشنهادهای خودکار برای input.
  • <output> — نمایش نتیجه‌ی محاسبه یا فرم.
  • <progress> و <meter> — نمایش پیشرفت و اندازه.

سه نکته‌ی کاربردی که در پروژه‌ها به‌کارم آمده:

  1. label برای هر input: اتصال label به input از طریق for و id، هم برای دسترس‌پذیری (کلیک روی label، فیلد را فعال می‌کند) و هم برای screen readerها حیاتی است. اگر label را فقط با کلاس استایل می‌دهید بدون اتصال معنایی، کاربر screen reader نمی‌داند هر فیلد برای چیست.
  2. type مناسب: type="email"، type="tel"، type="number" — هر کدام کیبورد مناسب را در موبایل فعال می‌کنند. این یکی از رایگان‌ترین بهبودهای تجربه‌ی کاربری موبایل است.
  3. autocomplete: ویژگی‌هایی مثل autocomplete="email" یا autocomplete="tel" به مرورگر می‌گویند مقدار ذخیره‌شده را پیشنهاد دهد. در فرم‌های طولانی، این یک کاهش محسوس در نرخ رهاشدن فرم می‌سازد.
<form action="/submit" method="post">
  <label for="email">ایمیل:</label>
  <input
    type="email"
    id="email"
    name="email"
    autocomplete="email"
    required>

  <label for="phone">شماره تماس:</label>
  <input
    type="tel"
    id="phone"
    name="phone"
    inputmode="tel"
    autocomplete="tel">

  <button type="submit">ارسال</button>
</form>

تگ‌های معنایی HTML5 که نباید نادیده بگیرید

HTML5 تگ‌های معنایی را معرفی کرد که به‌جای <div>، معنای دقیق بخش‌های مختلف صفحه را منتقل می‌کنند:

  • <header>: سربرگ اصلی یا سربرگ یک بخش.
  • <nav>: ناحیه‌ی ناوبری. اگر چند nav دارید، هر کدام با aria-label مشخص کنید.
  • <main>: محتوای اصلی صفحه. فقط یک‌بار در هر صفحه.
  • <article>: محتوای مستقل مثل پست، خبر، یا کامنت.
  • <section>: بخشی از محتوا با موضوع مرتبط. معمولاً با یک تیتر <h2> یا <h3> شروع می‌شود.
  • <aside>: محتوای حاشیه‌ای مثل سایدبار، تبلیغات، یادداشت‌ها.
  • <footer>: پانویس اصلی یا پانویس یک بخش.
  • <figure> و <figcaption>: تصویر با توضیح معنایی.

یک قاعده‌ی عملی که در تیم‌ها به‌کار می‌برم: هر بار که در حال نوشتن <div class="header"> هستید، به‌جای آن از <header> استفاده کنید. همین‌طور برای بقیه. در پروژه‌ای که تمام ساختار یک قالب وردپرسی را از div به HTML معنایی بازنویسی کردیم، امتیاز Lighthouse در بخش دسترس‌پذیری از ۶۲ به ۹۴ رسید — بدون تغییر یک خط CSS.

HTML معنایی، یک ویژگی نیست؛ یک تعهد به خوانایی است — برای مرورگر، برای گوگل، برای screen reader و برای توسعه‌دهنده‌ای که شش ماه بعد به این کد نگاه می‌کند.

تگ‌های مدرن و کم‌شناخته: details، summary، dialog

تگ‌هایی در HTML وجود دارند که کمتر استفاده می‌شوند اما می‌توانند جایگزین ده‌ها خط جاوااسکریپت شوند:

<details> و <summary>

<details>
  <summary>سوالات پرتکرار</summary>
  <p>پاسخ به سوال...</p>
</details>

یک آکاردئون کامل بدون یک خط جاوااسکریپت. در پروژه‌ای که بخش FAQ داشتیم، جایگزینی پیاده‌سازی جاوااسکریپتی با این تگ، حجم کد را به یک‌پنجم کاهش داد و در ضمن دسترس‌پذیری هم به‌طور خودکار بهتر شد.

<dialog>

<dialog id="myDialog">
  <p>محتوا</p>
  <button>بستن</button>
</dialog>
<script>
  document.getElementById('myDialog').showModal();
</script>

مودال بومی مرورگر. مدیریت فوکوس، بستن با Escape و دسترس‌پذیری، همه‌چیز به‌طور خودکار. اگر با فریم‌ورک‌هایی مثل React کار می‌کنید، این تگ می‌تواند جایگزین کتابخانه‌های مودال سنگین باشد. برای مطالعه‌ی نقش آن در کارایی، بهینه سازی جاوااسکریپت را ببینید.

تگ‌های دیگر

  • <template> — قالب HTML آماده که تا زمان فعال‌سازی رندر نمی‌شود.
  • <slot> — برای Web Components.
  • <canvas> — برای رسم گرافیک دو‌بعدی و سه‌بعدی.
  • <svg> — گرافیک برداری درون‌خطی، قابل استایل با CSS.
  • <iframe> — صفحه‌ی جاسازی‌شده، با احتیاط استفاده کنید.
  • <noscript> — محتوای جایگزین وقتی جاوااسکریپت غیرفعال است.
  • <data> — مقدار ماشین‌خوان برای یک متن.

اشتباهاتی که در پروژه‌ها دیدم

  • استفاده از <br> برای فاصله: بجای padding و margin در CSS. این کار ساختار سند را به‌هم می‌ریزد و در بازبینی دسترس‌پذیری به‌عنوان خطا شناسایی می‌شود.
  • استفاده از <b> و <i> به‌جای <strong> و <em>: نسخه‌های معنایی، screen readerها را قادر می‌کنند تأکید را تشخیص دهند.
  • nested دیوانه‌وار: در بازبینی یک پروژه، برای یک دکمه هفت لایه div تودرتو دیده‌ام. این ساختار هم نگهداری را سخت می‌کند و هم به‌طور محسوس روی کارایی اثر می‌گذارد.
  • حذف alt از تصاویر: هم سئو را ضعیف می‌کند و هم برای screen readerها مشکل ایجاد می‌کند. برای تصاویر تزئینی، alt="" خالی بگذارید، نه حذف.
  • استفاده از div برای دکمه: <div onclick="..."> فوکوس نمی‌گیرد، با Enter کار نمی‌کند و در screen reader به‌عنوان دکمه دیده نمی‌شود. همیشه از <button> استفاده کنید.
  • مقدار ثابت برای id در حلقه: در پروژه‌ای که لیستی از آیتم‌ها با id یکسان تولید می‌شد، جاوااسکریپت رفتار غلط داشت چون HTML فرض می‌کند idها در یک صفحه یکتا هستند.
  • عدم استفاده از <label> در فرم‌ها: نبود اتصال معنایی بین label و input، هم برای دسترس‌پذیری و هم برای تجربه‌ی موبایل مشکل ایجاد می‌کند.

بخشی از این اشتباهات در سئو تکنیکال چیست و رفع خطای لینک در وردپرس هم آمده است.

انتخاب تگ درست: یک تصمیم‌نامه‌ی عملی

در تیم‌های فنی، سؤال «کدام تگ برای این موقعیت؟» زیاد تکرار می‌شود. جدول زیر تجربه‌ی من را خلاصه می‌کند:

موقعیتتگ پیشنهادیاگر تگ بومی نیست
تیتر یک بخش<h2> یا <h3>هرگز از div استفاده نکنید
دکمه‌ای که عمل انجام می‌دهد<button>هرگز div با onclick
لینکی که به صفحه می‌رود<a>—
فهرست مراحل<ol>—
نقل‌قول بلوک<blockquote>div با استایل
تصویر با توضیح<figure><figcaption>—
پیشرفت یا نوار بارگذاری<progress>div با JS
آکاردئون سوالات<details><summary>div با JS
مودال<dialog>کتابخانه‌ی خارجی
محتوای پنهان تا اجرای JS<template>—
بخش ساختاری صفحهتگ معنایی مثل <header>، <main>، <article>div

هر بار که به div می‌رسید، یک بار دیگر جدول را نگاه کنید. در ۹۰٪ موارد، تگ بومی وجود دارد و انتخاب آن، نتیجه‌ی بهتری می‌سازد. برای مطالعه‌ی این انتخاب‌ها در چارچوب سبک‌سازی، انتخابگرهای CSS و بهینه سازی CSS را ببینید.

لایه‌ای زیر سینتکس تگ‌ها

اینجا وارد لایه‌ای می‌شوم که در پروژه‌های معمولی به آن نگاه نمی‌شود اما برای مهندسان پلتفرم و توسعه‌دهنده‌های ارشد اهمیت دارد. آنچه موتور رندر و اکوسیستم با تگ‌های HTML شما می‌کند، در پنج مفهوم خلاصه می‌شود:

  1. HTML Parser و Error Recovery Algorithm: مرورگرها با یک الگوریتم مشخص (طبق استاندارد WHATWG) سند HTML را پارس می‌کنند و اگر ساختار نامعتبر باشد، خودشان تصمیم می‌گیرند چگونه آن را «ترمیم» کنند. مثلاً یک <table> که بدون <tbody> نوشته شده، توسط مرورگر خودکار درون یک tbody مجازی قرار می‌گیرد. این رفتار به‌نفع شماست در برابر سند نامعتبر، اما درخت DOM نهایی با آنچه نوشته‌اید متفاوت می‌شود. این توضیح می‌دهد چرا بعضی انتخابگرهای CSS به‌طور غیرمنتظره کار نمی‌کنند: ساختار واقعی DOM با ساختار نوشته‌شده فرق دارد.
  2. DOM Tree و Accessibility Tree: مرورگر دو درخت موازی می‌سازد: DOM (برای رندر و CSS/JS) و Accessibility Tree (برای ابزارهای کمکی). هر تگ معنایی، در هر دو درخت معنای مشخصی دارد. اما یک نکته‌ی ظریف: تگ‌های نامعنایی مثل <div> در Accessibility Tree به‌طور کامل حذف می‌شوند، در حالی که <button>، <h1>، <nav> و <main> به‌عنوان Landmark یا Control ثبت می‌شوند. اگر سایت شما تمام div باشد، کاربر screen reader یک توده متن بی‌ساختار می‌بیند. مطالعه‌ی موازی این لایه در استانداردهای دسترس‌پذیری وب و WCAG چیست آمده است.
  3. Custom Elements و Web Components: HTML امروز قابل توسعه است. با customElements.define() می‌توانید تگ سفارشی بسازید — مثل <my-widget> — که رفتارش کاملاً در دست شماست. این قابلیت، در پروژه‌های Component-Based مدرن، جایگزین بخش زیادی از الگوهای کلاسیک CSS-محور می‌شود. برای درک موازی با جاوااسکریپت پیشرفته، مفاهیم پیشرفته جاوااسکریپت و کار با DOM در جاوااسکریپت را ببینید.
  4. HTML Semantics و نقش آن در Understanding گوگل: گوگل از تگ‌های معنایی برای فهم محتوا استفاده می‌کند. مثلاً <time datetime="2026-01-15"> به گوگل می‌گوید این تاریخ مشخص است و می‌تواند در Rich Results ظاهر شود. این تفاوت‌ها در پروژه‌های خبری و محتوایی، اثری مستقیم روی نمایش در نتایج دارند. مطالعه‌ی این لایه در چارچوب سئو تکنیکال چیست و سئو تکنیکال از خزش تا ایندکس آمده است.
  5. Interaction با CSS و Rendering Pipeline: برخی تگ‌ها مثل <table> و <fieldset> رفتار رندر پیچیده‌تری دارند و در پروژه‌های حساس به کارایی، می‌توانند باعث هزینه‌ی اضافه شوند. اگر در پروفایلر مرورگر بخش Layout زمان‌بر دیده‌اید، به‌جای سرزنش CSS، گاهی باید به ساختار HTML نگاه کنید. مطالعه‌ی موازی این لایه با کارایی کلی در بهینه سازی CSS و بهینه‌سازی سرعت سایت آمده است.

یک تجربه‌ی واقعی از پروژه‌ای که با مسئله‌ی Accessibility Tree روبرو شدیم: در یک سایت دولتی، بازبینی با NVDA نشان داد که کاربر screen reader نمی‌تواند از بخش «محتوای اصلی» به منو برگردد، چون هیچ Landmark‌ای در صفحه وجود نداشت. با تبدیل پوسته‌ی div به <header>، <nav>، <main> و <footer>، کاربر به‌طور خودکار توانست از طریق منوی «Landmarks» بین بخش‌های مختلف صفحه جهش کند. تغییر فقط در HTML بود؛ CSS و JS دست‌نخورده ماندند.

اگر روی پروژه‌های وردپرسی کار می‌کنید، پیشنهاد می‌کنم دلایل کندی قالب و قالب سبک را در کنار این بخش ببینید؛ چون قالب‌های مدرن که از HTML معنایی استفاده می‌کنند، در هر سه بُعد سئو، دسترس‌پذیری و کارایی، عملکرد بهتری دارند. برای مطالعه‌ی موازی با استانداردها و معماری CSS، استانداردهای HTML و CSS و CSS مدرن از Flexbox تا Grid دید وسیع‌تری می‌دهند. اگر روی چیدمان و رفتار واکنش‌گرا متمرکز هستید، مدیا کوئری در CSS و طراحی ریسپانسیو چیست را هم ببینید.

هر تگ HTML، یک سؤال است درباره‌ی معنای محتوا؛ پاسخ درست به این سؤال، بزرگ‌ترین سرمایه‌گذاری برای آینده‌ی سایت شماست.

جمع این نقشه در یک نگاه

تگ‌های پرکاربرد HTML را می‌توان در یک جمله خلاصه کرد: «ابزارهایی معنادار که هر کدام برای مسئله‌ای مشخص طراحی شده‌اند.» سه درس که از این مسیر با خودم بردم:

  1. تگ بومی را قبل از div بررسی کنید. در ۹۰٪ موارد، HTML یک تگ مخصوص برای آنچه می‌خواهید انجام دهید دارد. عادت div-first، دلیل بسیاری از باگ‌های دسترس‌پذیری و عملکردی است.
  2. تگ‌های معنایی را از همان اول درست پیاده کنید. تبدیل بعدی div به تگ معنایی، هم هزینه دارد و هم ریسک. سند HTML معنا محور از روز اول، هم سئو، هم دسترس‌پذیری و هم نگهداری را به‌طور محسوس بهبود می‌دهد.
  3. تگ‌های مدرن را جدی بگیرید. <details>، <dialog>، <template> و <picture> جایگزین‌های تمیزتری برای ده‌ها خط جاوااسکریپت و الگوهای قدیمی هستند. اگر هنوز از آن‌ها استفاده نمی‌کنید، یک فرصت از دست می‌دهید.

مسیر یادگیری وب با این نوشته تمام نمی‌شود. اگر می‌خواهید مرحله‌ی بعدی را بردارید، آموزش CSS از صفر، آموزش جاوااسکریپت از صفر و طراحی ریسپانسیو چیست سه قدم منطقی بعدی هستند. اگر روی پروژه‌های وردپرسی هستید و می‌خواهید تگ‌های معنایی را در قالب اعمال کنید، قالب چایلد و قالب وردپرس چیست نقطه‌ی شروع مناسبی هستند. اگر هم به سمت کارایی و بهینه‌سازی می‌روید، بهینه‌سازی سرعت سایت و بهینه سازی CSS دید وسیع‌تری می‌دهند.

اگر در پروژه‌ای با یک تگ عجیب روبرو شده‌اید — مثلاً تگی که در یک مرورگر درست کار می‌کند و در مرورگر دیگر نه، یا تگی که با یک خط CSS به‌طور غیرمنتظره رفتارش عوض می‌شود — جزئیات سناریو را در دیدگاه بنویسید. مخصوصاً اگر با تگ‌های مدرن مثل <details> یا <dialog> توانسته‌اید کد جاوااسکریپتی قابل توجهی را حذف کنید، همان تجربه برای خواننده‌ی بعدی از هر توضیح کلی ارزشمندتر است. 🧩