تمام تگهای HTML
از صفر تا صد
مرجع جامع فارسی — هر تگی که در تاریخ HTML وجود داشته: معروف، نادر، منقضیشده و حذفشده. هر کدام با تمام صفتها، مثال و توضیح کامل.
نوشتهشده توسط صدرا حاتمی | Sadra Hatami
مقدمه و راهنمای استفاده
چطور از این دایرهالمعارف بیشترین بهره را ببریبه کاملترین مرجع HTML فارسی خوش آمدی! 👋 این سند یک کتاب آموزشی ساده نیست؛ یک دایرهالمعارف است که سعی کرده تمام تگهای HTML را پوشش دهد — از پرکاربردترینها تا تگهایی که دهههاست منقضی شدهاند و دیگر هیچ مرورگری ازشان پشتیبانی نمیکند.
راهنمای برچسبها (Pills)
کنار نام هر تگ، یک یا چند «برچسب رنگی» میبینی که نوع آن را مشخص میکند:
- Block (بلوکی): کل عرض خط را میگیرد و خط جدید ایجاد میکند (مثل پاراگراف).
- Inline (درونخطی): فقط به اندازه محتوایش جا میگیرد و وسط متن مینشیند.
- Empty (خالی/Void): محتوا ندارد، پس تگ بسته هم ندارد (مثل تصویر).
- Metadata: در بخش <head> قرار میگیرد و دیده نمیشود.
- Deprecated (منقضی): هنوز شاید کار کند اما استفادهاش ممنوع است — جایگزین مدرن دارد.
- Obsolete (حذفشده): کاملاً از استاندارد حذف شده و مرورگرهای مدرن نادیدهاش میگیرند.
بالای منوی کناری یک جعبه جستجو هست. هر تگی را که دنبالش هستی تایپ کن (مثلاً canvas یا «فرم») تا فوراً فصل مربوطه فیلتر شود.
این مرجع بر اساس HTML Living Standard (استاندارد زنده WHATWG) که نسخه فعلی و رسمی HTML است نوشته شده. هر جا تگی قدیمی باشد، صریحاً مشخص شده.
آناتومی کامل تگها و صفتها
درک عمیق از واحدهای سازنده HTMLقبل از غرق شدن در تگها، بیا با دقت کالبدشکافی کنیم که یک «عنصر» (Element) دقیقاً از چه چیزهایی ساخته شده. این پایهی فهم همه چیز است.
عنصر، تگ و محتوا
┌─── تگ باز (Opening Tag)
│ ┌─── محتوا (Content)
│ │ ┌─── تگ بسته (Closing Tag)
▼ ▼ ▼
<p>سلام دنیا</p>
└──────────────────┘
کل این = یک «عنصر» (Element)
کالبدشکافی یک صفت (Attribute)
<a href="page.html" target="_blank">
▲ ▲ ▲
│ │ └── صفت دوم
│ └── مقدار (Value) داخل گیومه
└── نام صفت (Name)
- صفتها فقط در تگ باز میآیند.
- با فاصله از نام تگ و از همدیگر جدا میشوند.
- مقدار را معمولاً داخل گیومه دوتایی " " میگذاریم (توصیه میشود).
- ترتیب صفتها مهم نیست.
صفتهای بولی (Boolean Attributes)
بعضی صفتها فقط «وجود» یا «عدم وجود»شان مهم است و مقدار نمیخواهند:
<!-- اینها همگی معتبر و معادل هستند: -->
<input disabled>
<input disabled="">
<input disabled="disabled">
<!-- صرفِ نوشتن نام صفت = فعال بودن آن -->
<video autoplay muted loop controls>
نمونههای صفت بولی: disabled، checked، required، readonly، selected، multiple، autofocus، hidden، async، defer.
انواع گروهبندی محتوا (Content Categories)
HTML تگها را در دستههای منطقی گروهبندی میکند. این مفهوم پیشرفته اما مهم است:
| دسته | توضیح |
|---|---|
| Flow | اکثر عناصری که در body میآیند |
| Phrasing | متن و عناصر درونخطی |
| Heading | عناوین (h1 تا h6) |
| Sectioning | بخشبندی (article, section, nav, aside) |
| Embedded | محتوای خارجی (img, video, iframe) |
| Interactive | عناصر تعاملی (a, button, input) |
| Metadata | عناصر head (meta, link, title) |
کامنتها
<!-- این یک کامنت تکخطی است -->
<!--
کامنت
چندخطی
-->
<!-- کامنتها در منبع صفحه دیده میشوند پس
اطلاعات حساس را داخلشان نگذار! -->
در HTML5، نوشتن اسلش پایانی در تگهای خالی اختیاری است: هم <br> و هم <br /> درستاند. اما در XHTML (یا داخل SVG) اسلش اجباری است. قرارداد مدرن: در HTML خالص اسلش را حذف کن.
تگهای ساختاری ریشه
اسکلت اصلی که هر سند باید داشته باشداین تگها چارچوب کلی هر صفحه HTML را میسازند. بدون اینها هیچ سند معتبری وجود ندارد.
اولین خط هر سند. این یک تگ معمولی نیست، بلکه یک «اعلان» است. وظیفهاش این است که مرورگر را در «حالت استاندارد» (Standards Mode) قرار دهد، نه «حالت عجیب» (Quirks Mode) که رفتار قدیمی و غیرقابلپیشبینی دارد.
<!DOCTYPE html> <!-- HTML5 — ساده و مدرن -->
<!-- در گذشته (HTML4) اینطوری بود: -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" ...>بدون DOCTYPE، مرورگر وارد Quirks Mode میشود و طراحی صفحهات بههم میریزد. همیشه در خط اول بنویسش.
تنها فرزندان مستقیم مجازش <head> و <body> هستند.
صفتهای مهم:
| صفت | کاربرد |
|---|---|
| lang | زبان سند (fa, en, ar...) — برای SEO و صفحهخوان حیاتی |
| dir | جهت متن: rtl (راستبهچپ) یا ltr (چپبهراست) یا auto |
| xmlns | فضاینام XML (فقط در XHTML لازم است) |
<html lang="fa" dir="rtl">
...
</html>هر چیزی که در صفحه دیده نمیشود اما برای مرورگر، موتورهای جستجو و شبکههای اجتماعی مهم است، اینجا قرار میگیرد: عنوان، متاها، لینک CSS، اسکریپتها و... . (تمام تگهای مجاز در head را در فصل ۳ کامل میبینی.)
هر چیزی که کاربر میبیند اینجاست. در هر سند فقط یک body مجاز است.
صفتهای رویداد معروف body:
| صفت | کاربرد |
|---|---|
| onload | وقتی کل صفحه بارگذاری شد اجرا میشود |
| onunload | هنگام ترک صفحه |
| onresize | هنگام تغییر اندازه پنجره |
صفتهایی مثل bgcolor، text، link، background روی body منقضی شدهاند. این کارها حالا با CSS انجام میشوند. (در فصل تگهای مرده بیشتر میبینی.)
متادیتا و عناصر <head>
اطلاعات پشتصحنهای که سرنوشت سایتت را تعیین میکنندمهمترین عنصر برای SEO! در هر سند فقط یکی مجاز است. متن خالص میپذیرد (تگ داخلش کار نمیکند).
<title>فروشگاه کفش | بهترین قیمتها</title>یکی از پرکاربردترین و چندمنظورهترین تگها. با تغییر صفتهایش، اطلاعات مختلفی ارائه میدهد:
۱. کدگذاری حروف (حیاتی برای فارسی):
<meta charset="UTF-8">۲. Viewport (ریسپانسیو در موبایل):
<meta name="viewport" content="width=device-width, initial-scale=1.0">۳. توضیحات، کلمات کلیدی، نویسنده (SEO):
<meta name="description" content="توضیح صفحه">
<meta name="keywords" content="کلمه۱, کلمه۲">
<meta name="author" content="صدرا حاتمی | Sadra Hatami">
<meta name="robots" content="index, follow">
<meta name="theme-color" content="#0a0e1a">۴. رفرش خودکار و ریدایرکت (http-equiv):
<!-- هر ۳۰ ثانیه صفحه رفرش میشود -->
<meta http-equiv="refresh" content="30">
<!-- بعد از ۵ ثانیه به صفحه دیگر برو -->
<meta http-equiv="refresh" content="5; url=new.html">۵. متاهای شبکه اجتماعی (Open Graph & Twitter):
<meta property="og:title" content="عنوان">
<meta property="og:image" content="preview.jpg">
<meta name="twitter:card" content="summary_large_image">| صفت | کاربرد |
|---|---|
| rel | نوع رابطه: stylesheet, icon, preload, preconnect, alternate, canonical |
| href | آدرس منبع |
| type | نوع MIME فایل |
| media | شرط رسانهای (مثلاً فقط برای چاپ) |
| sizes | اندازه آیکون |
| crossorigin | تنظیمات CORS |
<link rel="stylesheet" href="style.css">
<link rel="icon" href="favicon.ico">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="canonical" href="https://site.com/page">برای استایلهای داخلی صفحه. صفت media میگیرد تا فقط در شرایط خاص اعمال شود.
<style>
body { background: black; }
</style>در هر سند فقط یکی مجاز است و باید قبل از سایر تگهایی که از URL استفاده میکنند بیاید.
<base href="https://example.com/" target="_blank">
<!-- حالا href="about" یعنی https://example.com/about -->اگر مرورگر کاربر JavaScript را خاموش کرده باشد، محتوای داخل این تگ نمایش داده میشود.
<noscript>
<p>لطفاً JavaScript را فعال کنید!</p>
</noscript>بخشبندی و عناوین معنایی
تگهایی که به ساختار صفحه معنا میدهنداین تگها به مرورگر، گوگل و صفحهخوانها میگویند هر بخش از صفحه چه نقشی دارد. استفاده درست از آنها نشانه یک توسعهدهنده حرفهای است.
میتواند چندبار در صفحه استفاده شود (هر article میتواند header خودش را داشته باشد). نباید داخل footer یا header دیگری قرار گیرد.
فقط برای ناوبریهای اصلی استفاده کن، نه هر گروه لینکی. صفحهخوانها به کاربر اجازه میدهند سریع به nav بپرند.
در هر صفحه فقط یک main باید قابل مشاهده باشد و نباید داخل article, aside, header, footer یا nav قرار گیرد.
مثل header میتواند چندبار استفاده شود (پاورقی کل صفحه و پاورقی هر مقاله).
تست: اگر بتوان آن را جدا کرد و جای دیگری منتشر کرد و باز هم معنادار باشد، باید article باشد (مثل یک پست وبلاگ یا یک کامنت).
معمولاً با یک عنوان (h1-h6) همراه است. اگر فقط برای استایلدهی میخواهی گروهبندی کنی، از div استفاده کن نه section.
محتوایی که بهطور غیرمستقیم با محتوای اصلی مرتبط است.
ساختار سلسلهمراتبی صفحه را میسازند. به ترتیب استفاده کن و از پرش نکن.
در هر صفحه فقط یک h1 (عنوان اصلی). بعد از h1 به h2 برو، نه h3. این برای SEO و دسترسیپذیری حیاتی است.
برای ترکیب یک عنوان (h1-h6) با یک پاراگراف توضیحی فرعی.
<hgroup>
<h1>عنوان اصلی</h1>
<p>شعار یا زیرعنوان</p>
</hgroup>معمولاً داخل footer قرار میگیرد. بهطور پیشفرض ایتالیک نمایش داده میشود.
گروهبندی محتوای متنی
پاراگراف، نقلقول، کد، شکل و جعبههای بلوکیپایهایترین واحد متن. نمیتوان داخلش عنصر بلوکی (مثل div یا p دیگر) گذاشت.
از نظر معنایی نشاندهنده «تغییر موضوع» است، نه فقط یک خط تزئینی. بهطور پیشفرض یک خط افقی رسم میکند.
برخلاف سایر تگها، تمام فاصلهها، تبها و خطوط جدید را دقیقاً حفظ میکند. با فونت monospace نمایش داده میشود. اغلب همراه با <code> برای نمایش کد استفاده میشود.
صفت cite میگیرد که آدرس منبع نقلقول را مشخص میکند (نمایش داده نمیشود ولی معنادار است).
<blockquote cite="https://source.com">
<p>به آینده باور داشته باش.</p>
</blockquote>این تگها در فصل اختصاصی «لیستها» با تمام جزئیات بررسی میشوند.
dl ظرف، dt اصطلاح (term) و dd توضیح (description) است. یک dt میتواند چند dd داشته باشد.
figcaption زیرنویس را مشخص میکند و باید اولین یا آخرین فرزند figure باشد.
<figure>
<img src="chart.png" alt="نمودار">
<figcaption>شکل ۱: رشد فروش</figcaption>
</figure>پرکاربردترین تگ برای گروهبندی و استایلدهی. هیچ معنای معنایی ندارد. فقط وقتی استفاده کن که هیچ تگ معنایی مناسبی وجود نداشته باشد.
در HTML امروزی، رفتارش دقیقاً مثل ul است اما معنای «نوار ابزار/دستورات» دارد.
معناشناسی متن درونخطی
دایرهالمعارف کامل تگهای inline — همه را پوشش میدهیماینجا تمام تگهای درونخطی (inline / phrasing) را با معنای دقیقشان میبینی. خیلیهایشان ظاهر مشابه دارند اما معنای متفاوت — و معنا همان چیزی است که تو را حرفهای میکند.
| تگ | نمایش پیشفرض | معنا و کاربرد |
|---|---|---|
| <a> | لینک آبی زیرخطدار | پیوند (در فصل ۷ کامل) |
| <strong> | پررنگ | اهمیت بالا (معنایی) |
| <b> | پررنگ | جلب توجه بصری بدون اهمیت معنایی |
| <em> | کج | تأکید (معنایی) — لحن صدا را تغییر میدهد |
| <i> | کج | متن متفاوت: اصطلاح فنی، نام خارجی، فکر |
| <mark> | هایلایت زرد | متن نشانهگذاری/مرتبط با جستجو |
| <small> | کوچکتر | متن جانبی (کپیرایت، شرایط) |
| <del> | خطخورده | متن حذفشده (صفت cite و datetime میگیرد) |
| <ins> | زیرخطدار | متن اضافهشده |
| <s> | خطخورده | متنی که دیگر دقیق/معتبر نیست |
| <u> | زیرخطدار | متن با حاشیهنویسی غیرمتنی (مثل غلط املایی) |
| <sub> | زیرنویس کوچک | اندیس پایین (H₂O) |
| <sup> | بالانویس کوچک | توان/اندیس بالا (x²) |
| <code> | فونت مونو | قطعه کد یا نام دستور |
| <kbd> | فونت مونو | ورودی کیبورد (Ctrl+C) |
| <samp> | فونت مونو | خروجی نمونه یک برنامه |
| <var> | کج | متغیر ریاضی/برنامهنویسی |
| <q> | با گیومه خودکار | نقلقول کوتاه درونخطی |
| <cite> | کج | عنوان یک اثر (کتاب، فیلم، آهنگ) |
| <abbr> | زیرخط نقطهچین | مخفف (با صفت title برای توضیح کامل) |
| <dfn> | کج | اولین تعریف یک اصطلاح |
| <time> | معمولی | تاریخ/زمان ماشینخوان (صفت datetime) |
| <data> | معمولی | اتصال محتوا به مقدار ماشینخوان (صفت value) |
| <span> | معمولی | ظرف درونخطی بیمعنا (برای استایل/اسکریپت) |
| <br> | شکست خط | شکستن خط (در شعر/آدرس) — Empty |
| <wbr> | — | نقطه پیشنهادی شکستن کلمه طولانی — Empty |
| <bdi> | معمولی | جداسازی جهت متن (عالی برای فارسی+انگلیسی) |
| <bdo> | معمولی | وارونه کردن اجباری جهت متن (صفت dir) |
| <ruby> | ویژه | حاشیهنویسی تلفظ (زبانهای شرق آسیا) |
| <rt> | کوچک بالا | متن تلفظ داخل ruby |
| <rp> | — | پرانتز جایگزین برای مرورگرهای بدون پشتیبانی ruby |
مثالهای عملی
<p>فرمول آب H<sub>2</sub>O و توان x<sup>2</sup></p>
<p>برای کپی <kbd>Ctrl+C</kbd> را بزن.</p>
<abbr title="HyperText Markup Language">HTML</abbr>
<time datetime="2024-01-15">۱۵ ژانویه</time>
<!-- bdi برای نام انگلیسی وسط متن فارسی -->
<p>کاربر <bdi>username123</bdi> امتیاز گرفت.</p>آب: H2O — توان: x2
پررنگ مهم · تأکید کج · هایلایت · حذف · افزوده
کلید: Ctrl + C
strong و em «معنا» دارند (اهمیت و تأکید) و برای SEO و صفحهخوان بهترند. b و i فقط ظاهریاند. وقتی شک داری، نسخه معنایی را انتخاب کن.
لینکها — تگ <a> کامل
قلب وب — تمام صفتها و انواع مسیرتمام صفتهای <a>:
| صفت | کاربرد |
|---|---|
| href | آدرس مقصد (URL، #id، mailto:، tel:، javascript:) |
| target | محل باز شدن: _blank (تب جدید)، _self (همینجا)، _parent، _top، نام frame |
| rel | رابطه: noopener, noreferrer, nofollow, next, prev, external, author |
| download | دانلود فایل بهجای باز کردن (میتوان نام فایل را تعیین کرد) |
| hreflang | زبان سند مقصد |
| type | نوع MIME مقصد |
| ping | آدرسهایی که هنگام کلیک پینگ میشوند (ردیابی) |
| referrerpolicy | سیاست ارسال اطلاعات referrer |
انواع مسیر:
<!-- مطلق (سایت دیگر) -->
<a href="https://site.com">سایت</a>
<!-- نسبی (فایل خودت) -->
<a href="pages/about.html">درباره</a>
<a href="../index.html">یک پوشه بالا</a>
<!-- لنگر داخل همین صفحه -->
<a href="#section3">پرش به بخش</a>
<!-- ایمیل (با موضوع و متن) -->
<a href="mailto:[email protected]?subject=سلام&body=متن">ایمیل</a>
<!-- تماس / پیامک -->
<a href="tel:+989120000000">تماس</a>
<a href="sms:+989120000000">پیامک</a>
<!-- دانلود فایل با نام دلخواه -->
<a href="file.pdf" download="راهنما.pdf">دانلود</a>هنگام استفاده از target="_blank"، حتماً rel="noopener noreferrer" اضافه کن. بدون آن، صفحه مقصد میتواند به صفحه تو دسترسی پیدا کند (حمله tabnabbing). مرورگرهای مدرن این را خودکار انجام میدهند اما برای اطمینان بنویسش.
تصاویر و رسانه
تمام تگهای نمایش عکس، صوت و ویدیو| صفت | کاربرد |
|---|---|
| src | آدرس تصویر (اجباری) |
| alt | متن جایگزین (اجباری برای دسترسیپذیری) |
| width / height | ابعاد به پیکسل (از پرش چیدمان جلوگیری میکند) |
| loading | lazy (بارگذاری تنبل) یا eager (فوری) |
| srcset | چند تصویر با اندازههای مختلف برای صفحات مختلف |
| sizes | اندازه نمایش در شرایط مختلف (همراه srcset) |
| decoding | نحوه رمزگشایی: async, sync, auto |
| crossorigin | تنظیمات CORS |
| usemap | اتصال به نقشه تصویر (image map) |
| ismap | نقشه سمت سرور |
| referrerpolicy | سیاست referrer |
<img src="small.jpg"
srcset="small.jpg 480w, large.jpg 1080w"
sizes="(max-width: 600px) 480px, 1080px"
alt="منظره" loading="lazy">به مرورگر اجازه میدهد از بین چند منبع، بهترین تصویر را انتخاب کند (مثلاً فرمت webp اگر پشتیبانی شود، یا تصویر متفاوت در موبایل).
<picture>
<source srcset="image.webp" type="image/webp">
<source srcset="image.jpg" type="image/jpeg">
<img src="image.jpg" alt="عکس">
</picture>| صفت | کاربرد |
|---|---|
| src | آدرس ویدیو (یا از تگ source استفاده کن) |
| controls | نمایش دکمههای پخش (بولی) |
| autoplay | پخش خودکار (بولی، نیاز به muted دارد) |
| muted | بیصدا (بولی) |
| loop | تکرار (بولی) |
| poster | تصویر پیشنمایش قبل از پخش |
| preload | none / metadata / auto |
| width / height | ابعاد پخشکننده |
| playsinline | پخش درونخطی در موبایل (بدون تمامصفحه) |
<video controls poster="thumb.jpg" width="640">
<source src="movie.webm" type="video/webm">
<source src="movie.mp4" type="video/mp4">
<track src="subs.vtt" kind="subtitles" srclang="fa" label="فارسی">
مرورگر شما از ویدیو پشتیبانی نمیکند.
</video>صفتهای مشابه video دارد (controls, autoplay, muted, loop, preload, src). برای موزیک و پادکست.
مرورگر اولین منبعی را که پشتیبانی میکند استفاده میکند. صفتها: src, type, srcset, media, sizes.
صفت kind میتواند subtitles، captions، descriptions، chapters یا metadata باشد. از فایلهای فرمت WebVTT استفاده میکند.
با این دو، میتوانی بخشهای مختلف یک تصویر را به لینکهای متفاوت وصل کنی (مثل نقشه جغرافیایی کلیکشونده).
<img src="map.png" usemap="#m" alt="نقشه">
<map name="m">
<area shape="rect" coords="0,0,100,100" href="a.html" alt="بخش A">
<area shape="circle" coords="200,200,50" href="b.html" alt="بخش B">
</map>shape میتواند rect (مستطیل)، circle (دایره)، poly (چندضلعی) یا default باشد.
محتوای تعبیهشده (Embedded)
جاسازی صفحات، اپلیکیشنها و محتوای خارجی| صفت | کاربرد |
|---|---|
| src | آدرس صفحهای که جاسازی میشود |
| srcdoc | محتوای HTML مستقیم (بهجای src) |
| width / height | ابعاد قاب |
| sandbox | محدودیتهای امنیتی (allow-scripts, allow-forms...) |
| allow | مجوزهای ویژگی (camera, microphone, fullscreen) |
| loading | lazy / eager |
| referrerpolicy | سیاست referrer |
| name | نام قاب (هدف لینکها) |
صفت sandbox محتوای iframe را در محیط محدود اجرا میکند. این برای جاسازی محتوای غیرقابلاعتماد حیاتی است.
صفتها: src, type, width, height. امروزه کمتر استفاده میشود.
انعطافپذیرتر از embed. <param> (خالی) برای ارسال پارامتر به object استفاده میشد.
<object data="doc.pdf" type="application/pdf" width="600">
نمایش PDF ممکن نیست.
</object>لیستها (Lists)
سازماندهی دادهها بهصورت ترتیبی، نامرتب و تعریفیHTML سه خانوادهٔ لیست دارد: نامرتب (ul) برای آیتمهایی که ترتیب اهمیت ندارد، مرتب (ol) برای آیتمهای شمارهدار، و تعریفی (dl) برای جفتهای اصطلاح/توضیح.
برای فهرستی از آیتمها که ترتیبشان مهم نیست. هر آیتم باید داخل <li> باشد.
<ul>
<li>سیب</li>
<li>پرتقال</li>
<li>موز</li>
</ul>شکل گلوله را با CSS (list-style-type: disc / circle / square / none) کنترل کن — نه با صفتهای HTML قدیمی.
برای آیتمهایی که ترتیب اهمیت دارد (مراحل، رتبهبندی). دارای صفتهای قدرتمند:
| صفت | کاربرد |
|---|---|
| type | نوع شمارهگذاری: 1 (عدد)، A (حروف بزرگ)، a (حروف کوچک)، I (رومی بزرگ)، i (رومی کوچک) |
| start | شماره شروع (مثلاً start="5" یعنی از ۵ شروع کن) |
| reversed | شمارهگذاری معکوس (نزولی) |
<ol type="I" start="3" reversed>
<li>مرحله سوم</li>
<li value="10">پرش به ۱۰</li>
</ol>تنها فرزند مجاز مستقیم ul و ol. صفت value فقط داخل ol معنا دارد و شمارهٔ آن آیتم را دستی تعیین میکند. میتوان لیستها را تو در تو کرد (یک ul/ol داخل یک li).
برای جفتهای اصطلاح و توضیح (واژهنامه، متادیتا، سوالوجواب). <dt> = اصطلاح، <dd> = توضیح. یک dt میتواند چند dd داشته باشد و برعکس.
<dl>
<dt>HTML</dt>
<dd>زبان نشانهگذاری ساختار وب</dd>
<dt>CSS</dt>
<dd>زبان استایلدهی</dd>
</dl>در HTML امروزی، menu معادل معنایی ul است اما برای فهرستی از فرمانها/دکمهها (مثل نوار ابزار). در گذشته صفت type (context/toolbar) داشت که حالا منسوخ شده است.
جدولها (Tables)
نمایش دادههای دوبعدی بهصورت ردیف و ستونجدولها فقط برای دادههای جدولی واقعیاند، نه برای چیدمان صفحه (layout). برای چیدمان از CSS Grid و Flexbox استفاده کن.
ساختار کامل و حرفهای یک جدول از این اجزا تشکیل میشود:
<table>
<caption>فروش فصلی</caption>
<colgroup>
<col span="2">
</colgroup>
<thead>
<tr><th>محصول</th><th>تعداد</th></tr>
</thead>
<tbody>
<tr><td>لپتاپ</td><td>۱۲</td></tr>
</tbody>
<tfoot>
<tr><td>جمع</td><td>۱۲</td></tr>
</tfoot>
</table>باید اولین فرزند table باشد. عنوانی برای کل جدول میسازد که برای دسترسیپذیری مهم است.
این سه عنصر جدول را معنایی میکنند. مرورگرها هنگام چاپ، سر و پاورقی را در هر صفحه تکرار میکنند. ترتیب نمایش بر اساس thead → tbody → tfoot است حتی اگر tfoot را زودتر بنویسی.
هر ردیف مجموعهای از سلولها (th یا td) را در بر میگیرد.
| صفت | کاربرد |
|---|---|
| scope | دامنه سرستون: col (ستون)، row (ردیف)، colgroup، rowgroup — حیاتی برای screen readerها |
| colspan | تعداد ستونهایی که سلول میپوشاند |
| rowspan | تعداد ردیفهایی که سلول میپوشاند |
| abbr | نسخه کوتاهشده عنوان برای فناوری کمکی |
| headers | شناسه سلولهای سرستون مرتبط |
صفتهای colspan و rowspan برای ادغام سلولها و headers برای اتصال به سرستونها.
<td colspan="2">دو ستون</td>
<td rowspan="3">سه ردیف</td>با colgroup و col میتوانی به یک یا چند ستون کامل استایل (مثل عرض یا رنگ پسزمینه) بدهی بدون اینکه هر سلول را جدا استایل کنی. صفت span روی col تعداد ستونها را تعیین میکند.
فرمها (Forms)
قلب تعامل با کاربر — جمعآوری و ارسال دادههر ورود/ثبتنام، جستجو، نظر، خرید و آپلود فایل در وب با فرم انجام میشود. این فصل تمام انواع input و تمام صفتهایشان را پوشش میدهد.
| صفت | کاربرد |
|---|---|
| action | آدرس مقصدی که دادهها به آن ارسال میشوند |
| method | روش ارسال: get (در URL) یا post (در بدنه درخواست) |
| enctype | نوع رمزگذاری: application/x-www-form-urlencoded، multipart/form-data (برای فایل)، text/plain |
| target | محل باز شدن پاسخ: _self، _blank، _parent، _top |
| autocomplete | on / off — تکمیل خودکار مرورگر |
| novalidate | غیرفعال کردن اعتبارسنجی داخلی مرورگر |
| name | نام فرم |
| accept-charset | کدگذاری کاراکترهای مجاز |
یک تگ، دهها چهره! نوع آن با صفت type مشخص میشود. تمام انواع:
| type | کاربرد |
|---|---|
| text | متن یکخطی ساده |
| password | رمز عبور (کاراکترها پنهان) |
| ایمیل با اعتبارسنجی فرمت | |
| tel | شماره تلفن (روی موبایل کیبورد عددی) |
| url | آدرس وب با اعتبارسنجی |
| number | عدد با فلش بالا/پایین |
| range | اسلایدر (نوار کشویی) |
| search | جعبه جستجو |
| checkbox | چکباکس (چند انتخاب) |
| radio | دکمه رادیویی (یک انتخاب از گروه) |
| date | انتخابگر تاریخ |
| time | انتخابگر زمان |
| datetime-local | تاریخ و زمان محلی |
| month | انتخاب ماه و سال |
| week | انتخاب هفته |
| color | انتخابگر رنگ |
| file | آپلود فایل |
| hidden | مقدار پنهان (ارسال میشود اما دیده نمیشود) |
| submit | دکمه ارسال فرم |
| reset | دکمه بازنشانی فرم |
| button | دکمه عمومی (بدون عمل پیشفرض) |
| image | دکمه ارسال بهشکل تصویر |
صفتهای مشترک input:
| صفت | کاربرد |
|---|---|
| name | نام فیلد (کلید داده هنگام ارسال) |
| value | مقدار اولیه/فعلی |
| placeholder | متن راهنمای داخل فیلد |
| required | اجباری بودن فیلد |
| readonly | فقطخواندنی (قابل ارسال) |
| disabled | غیرفعال (ارسال نمیشود) |
| min / max | کمینه/بیشینه عدد یا تاریخ |
| step | گام تغییر عدد/زمان |
| minlength / maxlength | کمینه/بیشینه طول متن |
| pattern | الگوی regex برای اعتبارسنجی |
| autocomplete | on / off / نام فیلد (مثل email, name) |
| autofocus | تمرکز خودکار هنگام بارگذاری |
| multiple | چند مقدار (email/file) |
| accept | نوع فایل مجاز (image/*, .pdf) |
| checked | پیشفرض انتخابشده (checkbox/radio) |
| list | اتصال به یک datalist |
| form | اتصال به فرمی با id خاص (خارج از آن) |
| inputmode | نوع کیبورد موبایل (numeric, decimal, tel...) |
<input type="email" name="mail" required placeholder="ایمیل">
<input type="number" min="1" max="10" step="1">
<input type="range" min="0" max="100">
<input type="file" accept="image/*" multiple>
<input type="color" value="#00e5ff">کلیک روی label تمرکز را روی فیلد میبرد. با صفت for (که برابر id فیلد است) متصل میشود یا فیلد را داخل خود میگیرد. برای دسترسیپذیری حیاتی است.
<label for="user">نام کاربری</label>
<input id="user" type="text">صفتها: rows (تعداد خطوط)، cols (عرض)، wrap (soft/hard)، maxlength، placeholder، required، readonly. مقدار اولیه بین تگ باز و بسته نوشته میشود، نه در صفت value.
<textarea rows="4" cols="40">متن پیشفرض</textarea>select منو را میسازد، option هر گزینه و optgroup گزینهها را دستهبندی میکند. صفت multiple روی select چند انتخابی میکند، size تعداد گزینههای نمایشی، و selected روی option گزینهٔ پیشفرض را تعیین میکند.
<select name="city">
<optgroup label="شمال">
<option value="rasht">رشت</option>
<option value="sari" selected>ساری</option>
</optgroup>
</select>برخلاف input[type=button]، میتواند محتوای HTML داشته باشد. صفت type: submit (پیشفرض)، reset، button. صفتهای formaction، formmethod، formtarget، formnovalidate رفتار ارسال را override میکنند.
<button type="submit">✓ ارسال</button>fieldset چند فیلد را در یک کادر دور هم جمع میکند و legend عنوان آن گروه است. صفت disabled روی fieldset همه فیلدهای داخلش را غیرفعال میکند.
با صفت list روی input به آن متصل میشود و پیشنهادهای تکمیل خودکار میدهد (کاربر میتواند مقدار دیگری هم تایپ کند).
<input list="browsers">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
</datalist>برای نمایش خروجی محاسبات (مثلاً نتیجهٔ یک اسلایدر یا جمع). صفت for فیلدهای ورودی مرتبط را مشخص میکند.
صفتهای value (مقدار فعلی) و max (حداکثر). اگر value نباشد، حالت نامعین (در حال بارگذاری) نشان میدهد.
صفتها: value، min، max، low، high، optimum. برخلاف progress، برای اندازهگیری ثابت است نه پیشرفت.
عناصر تعاملی (Interactive)
آکاردئون، پنجره و عناصر باز/بستهشونده بدون جاوااسکریپتیکی از زیباترین قابلیتهای HTML مدرن! summary عنوان قابل کلیک است و بقیه محتوای داخل details با کلیک باز/بسته میشود. صفت open آن را پیشفرض باز نگه میدارد.
<details open>
<summary>بیشتر بخوانید</summary>
<p>محتوای پنهان که با کلیک نمایان میشود.</p>
</details>پنجرهٔ مودال بومی مرورگر! با متد جاوااسکریپتی showModal() باز و با close() بسته میشود. صفت open آن را نمایان میکند. مزیت بزرگ: مدیریت تمرکز و بکدراپ بهصورت خودکار.
<dialog id="m">
<p>سلام!</p>
<button onclick="m.close()">بستن</button>
</dialog>اسکریپتنویسی و قالب (Scripting)
جاوااسکریپت، نقاشی پویا و قالبهای قابلاستفاده مجدد| صفت | کاربرد |
|---|---|
| src | آدرس فایل جاوااسکریپت خارجی |
| type | نوع: text/javascript (پیشفرض) یا module (برای ES Modules) |
| async | دانلود موازی و اجرا بهمحض آماده شدن |
| defer | اجرا پس از کامل شدن تجزیه HTML (به ترتیب) |
| crossorigin | تنظیمات CORS برای منبع خارجی |
| integrity | هش امنیتی (Subresource Integrity) |
| nomodule | فقط برای مرورگرهای قدیمی که module را نمیفهمند |
<script src="app.js" defer></script>
<script>console.log("سلام دنیا");</script>اگر مرورگر JS را اجرا نکند یا کاربر آن را خاموش کرده باشد، محتوای داخل noscript نمایش داده میشود.
سطحی برای رسم بازی، نمودار، انیمیشن و پردازش تصویر. با getContext('2d') یا WebGL کنترل میشود. صفتهای width و height ابعاد بوم را تعیین میکنند.
<canvas id="c" width="300" height="150"></canvas>محتوای داخل template رندر نمیشود تا زمانی که با JS کلون و به DOM اضافه شود. پایهٔ Web Components است.
محل جایگذاری محتوای دلخواه داخل کامپوننتهای سفارشی. صفت name اسلاتهای نامدار میسازد.
گرافیک برداری (SVG) و ریاضی (MathML)
رسم اشکال مقیاسپذیر و فرمولهای ریاضی مستقیم در HTMLگرافیک برداری مقیاسپذیر — تصاویری که با ریاضیات تعریف میشوند، در هر اندازهای واضحاند و مستقیماً داخل HTML نوشته میشوند.
صفتهای مهم: width، height، viewBox (سیستم مختصات داخلی)، xmlns. تگهای فرزند: rect, circle, ellipse, line, polyline, polygon, path, text, g (گروه)، defs، linearGradient و...
<svg viewBox="0 0 100 100" width="120">
<circle cx="50" cy="50" r="40" fill="#00e5ff"></circle>
<rect x="10" y="10" width="30" height="30"></rect>
</svg>| تگ | کاربرد |
|---|---|
| <rect> | مستطیل (x, y, width, height, rx) |
| <circle> | دایره (cx, cy, r) |
| <ellipse> | بیضی (cx, cy, rx, ry) |
| <line> | خط (x1, y1, x2, y2) |
| <polyline> | چند خط متصل |
| <polygon> | چندضلعی بسته |
| <path> | مسیر آزاد (قدرتمندترین — با دستورات M, L, C, Z) |
| <text> | متن برداری |
| <g> | گروهبندی عناصر |
| <defs> | تعاریف قابل استفاده مجدد |
| <linearGradient> / <radialGradient> | گرادیانها |
| <use> | استفاده مجدد از عنصر تعریفشده |
| <animate> | انیمیشن SMIL |
زبان نشانهگذاری ریاضی. تگهای اصلی: mrow (ردیف)، mi (شناسه)، mn (عدد)، mo (عملگر)، msup (توان)، msub (زیرنویس)، mfrac (کسر)، msqrt (جذر)، mroot (ریشه n-ام).
<math>
<msup><mi>x</mi><mn>2</mn></msup>
</math>صفتهای سراسری (Global Attributes)
صفتهایی که روی هر تگ HTML کار میکننداین صفتها مخصوص یک تگ نیستند — روی تمام عناصر HTML قابل استفادهاند. شناختشان سوپرپاور توست!
| صفت | کاربرد |
|---|---|
| id | شناسه یکتا در صفحه (برای CSS، JS، لینک لنگری) |
| class | یک یا چند نام کلاس (با فاصله) برای گروهبندی استایل |
| style | استایل CSS درونخطی (inline) |
| title | متن راهنمای شناور (tooltip) |
| hidden | پنهان کردن کامل عنصر (hidden یا hidden="until-found") |
| صفت | کاربرد |
|---|---|
| lang | زبان محتوا (fa، en، ar...) |
| dir | جهت متن: rtl (راستبهچپ)، ltr، auto |
| translate | yes / no — آیا ترجمه خودکار شود |
| صفت | کاربرد |
|---|---|
| contenteditable | true / false — قابل ویرایش کردن محتوا توسط کاربر |
| draggable | true / false — قابل کشیدن (Drag & Drop) |
| spellcheck | true / false — بررسی املا |
| tabindex | ترتیب حرکت با کلید Tab (0، مثبت یا -1) |
| accesskey | میانبر صفحهکلید |
| autocapitalize | بزرگنویسی خودکار (none، sentences، words، characters) |
| inputmode | نوع کیبورد مجازی (numeric، tel، email، url، decimal) |
| enterkeyhint | برچسب کلید Enter موبایل (search، send، go، done) |
یکی از قدرتمندترین قابلیتها! هر صفتی که با data- شروع شود معتبر است و با JS از طریق element.dataset خوانده میشود.
<div data-user-id="42" data-role="admin"></div>
// JS: el.dataset.userId → "42"| صفت | کاربرد |
|---|---|
| role | نقش معنایی عنصر برای screen reader |
| aria-* | خانوادهٔ صفتهای ARIA (aria-label, aria-hidden, aria-expanded...) |
| part | نام بخش برای استایلدهی از بیرون Shadow DOM |
| slot | اختصاص عنصر به یک اسلات نامدار |
| itemprop / itemscope / itemtype | Microdata برای دادههای ساختاریافته (SEO) |
| nonce | توکن امنیتی CSP |
| is | ساخت عنصر سفارشی داخلی |
صفتهای رویداد (Event Attributes)
واکنش به کلیک، تایپ، حرکت موس و... مستقیم در HTMLاگرچه میتوانی رویدادها را مستقیم در HTML بنویسی (onclick="...")، روش حرفهای استفاده از addEventListener در جاوااسکریپت است (جدا کردن منطق از ساختار).
| رویداد | زمان فعال شدن |
|---|---|
| onclick | کلیک تک |
| ondblclick | دابلکلیک |
| onmousedown / onmouseup | فشردن / رها کردن دکمه موس |
| onmouseover / onmouseout | ورود / خروج موس از عنصر |
| onmousemove | حرکت موس روی عنصر |
| onmouseenter / onmouseleave | ورود/خروج (بدون bubbling) |
| oncontextmenu | کلیک راست |
| onwheel | چرخش اسکرول موس |
| رویداد | زمان فعال شدن |
|---|---|
| onkeydown / onkeyup | فشردن / رها کردن کلید |
| onkeypress | فشردن کلید (منسوخ) |
| oninput | تغییر مقدار ورودی (لحظهای) |
| onchange | تغییر مقدار پس از خروج از فیلد |
| onfocus / onblur | گرفتن / از دست دادن تمرکز |
| onsubmit | ارسال فرم |
| onreset | بازنشانی فرم |
| onselect | انتخاب متن در فیلد |
| رویداد | زمان فعال شدن |
|---|---|
| onload / onunload | بارگذاری / ترک صفحه |
| onresize | تغییر اندازه پنجره |
| onscroll | اسکرول صفحه |
| onerror | خطا در بارگذاری منبع |
| onplay / onpause / onended | پخش / مکث / پایان رسانه |
| ontimeupdate | تغییر زمان پخش |
| ondragstart / ondrag / ondragend | شروع / حین / پایان کشیدن |
| ondrop / ondragover | رها کردن / عبور هنگام کشیدن |
| oncopy / oncut / onpaste | کپی / برش / چسباندن |
<button onclick="alert('کلیک شد!')">بزن</button>موجودیتهای HTML (Entities)
نمایش کاراکترهای ویژه و رزروشدهکاراکترهایی مثل < و > در HTML معنای ساختاری دارند. برای نمایش خودِ این کاراکترها باید از کد جایگزین (entity) استفاده کنی. هر entity با & شروع و با ; تمام میشود.
| کد | نتیجه | نام |
|---|---|---|
| < | < | کوچکتر از |
| > | > | بزرگتر از |
| & | & | اَمپرسند |
| " | " | گیومه دوتایی |
| ' | ' | گیومه تکی |
| | (فاصله) | فاصلهٔ غیرشکننده |
| کد | نتیجه | توضیح |
|---|---|---|
| © | © | کپیرایت |
| ® | ® | علامت ثبتشده |
| ™ | ™ | تجاری |
| € | € | یورو |
| £ | £ | پوند |
| ¢ | ¢ | سنت |
| ° | ° | درجه |
| ± | ± | بهعلاوه/منها |
| × | × | ضرب |
| ÷ | ÷ | تقسیم |
| ½ | ½ | یکدوم |
| … | … | سهنقطه |
| — | — | خط تیره بلند |
| → ← | → ← | فلش راست/چپ |
| ♥ | ♥ | قلب |
میتوانی از کد عددی هم استفاده کنی: © (دهدهی) یا © (هگزادسیمال) هر دو © میسازند. این روش برای هر کاراکتر یونیکدی کار میکند.
تگهای منقضیشده (Deprecated)
تگهایی که هنوز کار میکنند اما نباید استفاده شونداین تگها هنوز در اکثر مرورگرها کار میکنند، اما از استاندارد حذف شدهاند. وظیفهٔ آنها (اغلب استایلدهی) حالا بر عهدهٔ CSS است. آنها را فقط برای شناخت کد قدیمی بدان — هرگز در پروژهٔ جدید استفاده نکن!
جایگزین مدرن: CSS text-align: center یا margin: auto.
صفتهای قدیمی: face، size، color. جایگزین: CSS font-family، font-size، color.
جایگزین: CSS font-size.
جایگزین معنایی: <s> یا <del>، یا CSS text-decoration: line-through.
جایگزین: <code> یا <kbd> یا CSS font-family: monospace.
متن را بهصورت خودکار حرکت میداد. صفتها: direction، behavior، scrollamount. جایگزین: انیمیشن CSS (@keyframes + transform).
متن را چشمکزن میکرد. بهخاطر آزاردهنده بودن و مشکلات دسترسیپذیری کاملاً کنار گذاشته شد.
| صفت قدیمی | جایگزین CSS |
|---|---|
| bgcolor | background-color |
| align | text-align / float |
| border (روی img/table) | border |
| width / height (بهجز روی img, canvas, video) | width / height در CSS |
| cellpadding / cellspacing | padding / border-spacing |
| valign | vertical-align |
| nowrap | white-space: nowrap |
تگهای کاملاً حذفشده (Obsolete)
تگهایی که از HTML5 بهکلی حذف شدند و دیگر پشتیبانی نمیشونداین تگها در گذشته بخشی از وب بودند اما کاملاً منسوخ و از استاندارد حذف شدند. مرورگرهای مدرن یا آنها را نادیده میگیرند یا بهعنوان متن ساده رفتار میکنند. این بخش صرفاً تاریخی و آموزشی است.
جایگزین: <abbr> برای همهٔ مخففها.
جاوا اپلتها منسوخ شدند. جایگزین: <object> یا فناوریهای وب مدرن.
جایگزین: CSS روی body یا html.
جایگزین: <ul>.
صفحه را به چند قاب مستقل تقسیم میکرد. بهخاطر مشکلات دسترسیپذیری، SEO و کاربری حذف شد. جایگزین: <iframe> برای جاسازی و CSS برای چیدمان.
جایگزین: <input type="search"> داخل فرم.
برای نمایش متن بدون تفسیر تگها بودند. جایگزین: <pre> + <code> با escape کردن entityها.
| تگ | کار قدیمی → جایگزین |
|---|---|
| <nobr> | جلوگیری از شکستن خط → CSS white-space: nowrap |
| <spacer> | ایجاد فاصله → CSS margin/padding |
| <multicol> | چندستونی → CSS columns |
| <nextid> | تولید id خودکار → دیگر استفاده نمیشود |
| <bgsound> | صدای پسزمینه → <audio> |
| <blink> | چشمک → CSS animation |
| <keygen> | تولید کلید رمزنگاری → API های مدرن وب |
| <menuitem> | آیتم منوی زمینه → حذف شد |
| <rb> <rtc> | اجزای ruby قدیمی → rt کافی است |
| <hgroup> (نسخه قدیم) | تعریفش تغییر کرد ولی هنوز هست |
قدم بعدی: CSS
به اسکلت HTMLات لباس، رنگ و حرکت بدهHTML ساختار است (استخوان)، CSS ظاهر (پوست و لباس). با CSS رنگ، فونت، فاصله، چیدمان و انیمیشن میسازی. همین سندی که میبینی، تمام زیباییاش از CSS است!
.card {
background: #0a0e27;
color: #00e5ff;
padding: 20px;
border-radius: 16px;
transition: transform 0.3s;
}
.card:hover { transform: scale(1.05); }مفاهیم کلیدی بعدی: Flexbox، Grid، Media Queries (ریسپانسیو)، انیمیشن و متغیرهای CSS.
قدم بعدی: JavaScript
به صفحهات مغز و رفتار بدهزبان برنامهنویسی وب. با آن صفحه را تعاملی میکنی: واکنش به کلیک، تغییر محتوا بدون رفرش، دریافت داده از سرور، انیمیشن و بازی. همان جستجو و ذرات متحرک این سند، کار JavaScript است.
const btn = document.querySelector('#myBtn');
btn.addEventListener('click', () => {
alert('سلام از طرف صدرا حاتمی!');
});مفاهیم بعدی: متغیرها، توابع، حلقهها، DOM، fetch API، async/await و فریمورکها (React، Vue).
قدم بعدی: Backend
سمت سرور — جایی که دادهها زندگی میکنندچیزی که کاربر نمیبیند: سرور، پایگاهداده، احراز هویت و منطق برنامه. وقتی لاگین میکنی یا خرید میکنی، بکاند کار را انجام میدهد.
زبانهای محبوب: Node.js (JavaScript)، Python، PHP، Go. پایگاهدادهها: PostgreSQL، MySQL، MongoDB. مفاهیم: API، REST، احراز هویت و امنیت.
مقصد نهایی: Full-Stack
وقتی همهٔ قطعات کنار هم مینشینندبرنامهنویس Full-Stack هم فرانت (HTML/CSS/JS) و هم بک (سرور/دیتابیس) را بلد است. مسیر پیشنهادی: HTML → CSS → JavaScript → یک فریمورک فرانت → یک زبان بکاند → دیتابیس → دیپلوی. تو همین حالا قدم اول و مهمترین قدم را برداشتی!
پایان سفر، شروع راه تو ✨
این دایرهالمعارف تمام تگهای HTML — از پرکاربردترین تا منقضی و حذفشده — را برایت گرد آورد. حالا نوبت توست که با دستهای خودت وب بسازی. هر استاد بزرگی، روزی یک مبتدی بود که هرگز تسلیم نشد.