🎓 آموزش تعاملی HTML

آموزش HTML از صفر تا ساخت سایت

یاد بگیر، خودت کدنویسی کن، نتیجه را ببین و همان لحظه اشتباهاتت را اصلاح کن ❤️

📚 49 درس 💻 تمرین عملی 🏆 پروژه نهایی
۰٪ تکمیل شده
📖 فصل ۱ — شروع HTML
1

HTML چیست؟

درس 1 از 49
📖 آموزش

HTML زبان نشانه‌گذاری صفحات وب است. با HTML ساختار صفحه را می‌سازیم؛ مثل عنوان، متن، تصویر، لینک و فرم.

💡
نکته مهم

HTML ساختار صفحه را مشخص می‌کند؛ CSS برای زیبایی و JavaScript برای رفتار و تعامل استفاده می‌شود.

💻 نمونه کد
<h1>سلام دنیا</h1>
👁 خروجی مثال
✍️ حالا نوبت توست

یک عنوان h1 بساز و داخل آن عبارت «سلام دنیا» را بنویس.

✅ کد صحیح
<h1>سلام دنیا</h1>
                
2

تگ چیست؟

درس 2 از 49
📖 آموزش

تگ‌ها عناصر HTML هستند. بسیاری از تگ‌ها یک تگ شروع و یک تگ پایان دارند.

💡
نکته مهم

مثلاً <p> شروع پاراگراف و </p> پایان آن است.

💻 نمونه کد
<p>متن من</p>
👁 خروجی مثال
✍️ حالا نوبت توست

یک پاراگراف با متن «متن من» ایجاد کن.

✅ کد صحیح
<p>متن من</p>
                
3

ساختار صفحه HTML

درس 3 از 49
📖 آموزش

یک صفحه HTML معمولاً از html، head و body تشکیل می‌شود.

💡
نکته مهم

محتوایی که کاربر در صفحه می‌بیند معمولاً داخل body قرار می‌گیرد.

💻 نمونه کد
<html>
<head></head>
<body>
سلام
</body>
</html>
👁 خروجی مثال
✍️ حالا نوبت توست

ساختار اصلی html، head و body را بنویس.

✅ کد صحیح
<html><head></head><body>سلام</body></html>
                
4

DOCTYPE چیست؟

درس 4 از 49
📖 آموزش

DOCTYPE به مرورگر اعلام می‌کند که سند از استاندارد HTML استفاده می‌کند.

💡
نکته مهم

در HTML5 شکل صحیح آن بسیار ساده است.

💻 نمونه کد
<!DOCTYPE html>
👁 خروجی مثال
✍️ حالا نوبت توست

DOCTYPE مربوط به HTML5 را بنویس.

✅ کد صحیح
<!DOCTYPE html>
                
ساخت و توسعه معراج حداد ❤️
5

عنوان صفحه با title

درس 5 از 49
📖 آموزش

تگ title عنوان صفحه را مشخص می‌کند و معمولاً در تب مرورگر دیده می‌شود.

💡
نکته مهم

title داخل head قرار می‌گیرد.

💻 نمونه کد
<title>سایت من</title>
👁 خروجی مثال
✍️ حالا نوبت توست

عنوان صفحه را «سایت من» قرار بده.

✅ کد صحیح
<title>سایت من</title>
                
📖 فصل ۲ — متن و عنوان‌ها
6

عنوان اصلی h1

درس 6 از 49
📖 آموزش

h1 مهم‌ترین عنوان صفحه است و معمولاً عنوان اصلی محتوا را مشخص می‌کند.

💡
نکته مهم

عنوان‌ها را بر اساس اهمیت و ساختار محتوا انتخاب کن.

💻 نمونه کد
<h1>آموزش HTML</h1>
👁 خروجی مثال
✍️ حالا نوبت توست

یک h1 با متن «آموزش HTML» بساز.

✅ کد صحیح
<h1>آموزش HTML</h1>
                
7

عنوان‌های h2 تا h6

درس 7 از 49
📖 آموزش

HTML شش سطح عنوان دارد: h1 تا h6.

💡
نکته مهم

h1 مهم‌ترین سطح و h6 پایین‌ترین سطح عنوان است.

💻 نمونه کد
<h2>بخش اول</h2>
👁 خروجی مثال
✍️ حالا نوبت توست

یک عنوان h2 با متن «بخش اول» بساز.

✅ کد صحیح
<h2>بخش اول</h2>
                
8

پاراگراف p

درس 8 از 49
📖 آموزش

برای نوشته‌های معمولی از تگ p استفاده می‌کنیم.

💡
نکته مهم

پاراگراف باعث می‌شود متن ساختارمندتر و خواناتر باشد.

💻 نمونه کد
<p>من HTML یاد می‌گیرم.</p>
👁 خروجی مثال
✍️ حالا نوبت توست

یک پاراگراف با متن «من HTML یاد می‌گیرم.» بساز.

✅ کد صحیح
<p>من HTML یاد می‌گیرم.</p>
                
ساخت و توسعه معراج حداد ❤️
9

شکستن خط با br

درس 9 از 49
📖 آموزش

تگ br باعث می‌شود متن از خط بعد ادامه پیدا کند.

💡
نکته مهم

br تگ بدون تگ پایانی است.

💻 نمونه کد
سلام<br>دنیا
👁 خروجی مثال
✍️ حالا نوبت توست

بین «سلام» و «دنیا» یک br قرار بده.

✅ کد صحیح
سلام<br>دنیا
                
10

متن مهم با strong

درس 10 از 49
📖 آموزش

strong برای مشخص کردن اهمیت معنایی یک متن استفاده می‌شود.

💡
نکته مهم

strong فقط برای ضخیم کردن متن نیست؛ معنای اهمیت متن را هم مشخص می‌کند.

💻 نمونه کد
<strong>مهم</strong>
👁 خروجی مثال
✍️ حالا نوبت توست

کلمه «مهم» را با strong مشخص کن.

✅ کد صحیح
<strong>مهم</strong>
                
📖 فصل ۳ — لینک‌ها
11

ساخت لینک

درس 11 از 49
📖 آموزش

برای ساخت لینک از تگ a استفاده می‌کنیم.

💡
نکته مهم

آدرس مقصد لینک داخل ویژگی href قرار می‌گیرد.

💻 نمونه کد
<a href="https://example.com">سایت</a>
👁 خروجی مثال
✍️ حالا نوبت توست

یک لینک بساز که ویژگی href داشته باشد.

✅ کد صحیح
<a href="https://example.com">سایت</a>
                
12

ویژگی href

درس 12 از 49
📖 آموزش

href آدرس مقصد یک لینک را مشخص می‌کند.

💡
نکته مهم

مقدار href می‌تواند آدرس یک سایت یا مسیر یک صفحه داخلی باشد.

💻 نمونه کد
<a href="https://google.com">گوگل</a>
👁 خروجی مثال
✍️ حالا نوبت توست

لینکی به https://google.com بساز.

✅ کد صحیح
<a href="https://google.com">گوگل</a>
                
ساخت و توسعه معراج حداد ❤️
13

باز کردن لینک در تب جدید

درس 13 از 49
📖 آموزش

با target="_blank" می‌توان لینک را در تب جدید باز کرد.

💡
نکته مهم

برای لینک خارجی بهتر است rel="noopener" نیز در نظر گرفته شود.

💻 نمونه کد
<a href="https://example.com" target="_blank">ورود</a>
👁 خروجی مثال
✍️ حالا نوبت توست

یک لینک بساز که در تب جدید باز شود.

✅ کد صحیح
<a href="https://example.com" target="_blank">ورود</a>
                
📖 فصل ۴ — تصاویر
14

قرار دادن تصویر

درس 14 از 49
📖 آموزش

برای نمایش تصویر از تگ img استفاده می‌کنیم.

💡
نکته مهم

img تگ بدون تگ پایانی است.

💻 نمونه کد
<img src="image.jpg" alt="تصویر">
👁 خروجی مثال
✍️ حالا نوبت توست

یک تصویر بساز که src و alt داشته باشد.

✅ کد صحیح
<img src="image.jpg" alt="تصویر">
                
15

ویژگی alt

درس 15 از 49
📖 آموزش

alt توضیح متنی تصویر است و برای دسترسی‌پذیری و سئو اهمیت دارد.

💡
نکته مهم

برای تصویرهای محتوایی، توضیحی واضح و مرتبط در alt بنویس.

💻 نمونه کد
<img src="photo.jpg" alt="عکس طبیعت">
👁 خروجی مثال
✍️ حالا نوبت توست

تصویری با alt برابر «عکس طبیعت» بساز.

✅ کد صحیح
<img src="photo.jpg" alt="عکس طبیعت">
                
16

ویدئو

درس 16 از 49
📖 آموزش

HTML امکان نمایش ویدئو را با تگ video فراهم می‌کند.

💡
نکته مهم

با controls کنترل‌های پخش ویدئو نمایش داده می‌شوند.

💻 نمونه کد
<video controls></video>
👁 خروجی مثال
✍️ حالا نوبت توست

یک video با controls بساز.

✅ کد صحیح
<video controls></video>
                
ساخت و توسعه معراج حداد ❤️
17

صدا با audio

درس 17 از 49
📖 آموزش

برای نمایش و پخش فایل صوتی می‌توان از audio استفاده کرد.

💡
نکته مهم

controls کنترل‌های پخش صدا را نمایش می‌دهد.

💻 نمونه کد
<audio controls></audio>
👁 خروجی مثال
✍️ حالا نوبت توست

یک audio با controls ایجاد کن.

✅ کد صحیح
<audio controls></audio>
                
📖 فصل ۵ — لیست‌ها
18

لیست نامرتب ul

درس 18 از 49
📖 آموزش

ul برای ساخت لیست‌هایی استفاده می‌شود که ترتیب عددی ندارند.

💡
نکته مهم

هر مورد لیست با li ساخته می‌شود.

💻 نمونه کد
<ul>
<li>HTML</li>
<li>CSS</li>
</ul>
👁 خروجی مثال
✍️ حالا نوبت توست

یک ul با حداقل دو li بساز.

✅ کد صحیح
<ul><li>HTML</li><li>CSS</li></ul>
                
19

لیست مرتب ol

درس 19 از 49
📖 آموزش

ol برای لیست‌هایی استفاده می‌شود که ترتیب آیتم‌ها اهمیت دارد.

💡
نکته مهم

مرورگر معمولاً شماره‌گذاری را خودش انجام می‌دهد.

💻 نمونه کد
<ol>
<li>اول</li>
<li>دوم</li>
</ol>
👁 خروجی مثال
✍️ حالا نوبت توست

یک ol با دو li بساز.

✅ کد صحیح
<ol><li>اول</li><li>دوم</li></ol>
                
📖 فصل ۶ — ساختار صفحه
20

div چیست؟

درس 20 از 49
📖 آموزش

div یک ظرف عمومی برای گروه‌بندی عناصر HTML است.

💡
نکته مهم

div معنای خاصی ندارد و بیشتر برای ساختاردهی استفاده می‌شود.

💻 نمونه کد
<div>
<p>سلام</p>
</div>
👁 خروجی مثال
✍️ حالا نوبت توست

یک div بساز و داخل آن p قرار بده.

✅ کد صحیح
<div><p>سلام</p></div>
                
ساخت و توسعه معراج حداد ❤️
21

span چیست؟

درس 21 از 49
📖 آموزش

span برای مشخص کردن قسمت کوچکی از متن یا محتوا استفاده می‌شود.

💡
نکته مهم

span معمولاً برای بخش‌های inline متن کاربرد دارد.

💻 نمونه کد
<span>دوست من</span>
👁 خروجی مثال
✍️ حالا نوبت توست

یک span بساز.

✅ کد صحیح
<span>دوست من</span>
                
22

header

درس 22 از 49
📖 آموزش

header برای سربرگ صفحه یا یک بخش از محتوا استفاده می‌شود.

💡
نکته مهم

لوگو، عنوان و عناصر ابتدایی صفحه می‌توانند در header قرار بگیرند.

💻 نمونه کد
<header>
<h1>سایت من</h1>
</header>
👁 خروجی مثال
✍️ حالا نوبت توست

یک header بساز و داخل آن h1 قرار بده.

✅ کد صحیح
<header><h1>سایت من</h1></header>
                
23

nav

درس 23 از 49
📖 آموزش

nav برای مجموعه لینک‌های ناوبری و منوی سایت استفاده می‌شود.

💡
نکته مهم

لینک‌های اصلی سایت را می‌توان داخل nav قرار داد.

💻 نمونه کد
<nav>
<a href="/">خانه</a>
</nav>
👁 خروجی مثال
✍️ حالا نوبت توست

یک nav بساز که داخل آن یک لینک باشد.

✅ کد صحیح
<nav><a href="/">خانه</a></nav>
                
24

main

درس 24 از 49
📖 آموزش

main محتوای اصلی صفحه را مشخص می‌کند.

💡
نکته مهم

main باید محتوایی را شامل شود که هسته اصلی صفحه است.

💻 نمونه کد
<main>
<h1>محتوای اصلی</h1>
</main>
👁 خروجی مثال
✍️ حالا نوبت توست

یک main بساز و داخل آن h1 قرار بده.

✅ کد صحیح
<main><h1>محتوای اصلی</h1></main>
                
ساخت و توسعه معراج حداد ❤️
25

section و article

درس 25 از 49
📖 آموزش

section یک بخش مستقل از محتوا و article محتوایی است که می‌تواند به صورت مستقل معنا داشته باشد.

💡
نکته مهم

استفاده از تگ‌های معنایی باعث می‌شود ساختار صفحه برای انسان و موتور جستجو قابل فهم‌تر باشد.

💻 نمونه کد
<section>
<article>مقاله</article>
</section>
👁 خروجی مثال
✍️ حالا نوبت توست

یک section بساز و داخل آن article قرار بده.

✅ کد صحیح
<section><article>مقاله</article></section>
                
26

footer

درس 26 از 49
📖 آموزش

footer برای بخش پایانی صفحه یا یک بخش استفاده می‌شود.

💡
نکته مهم

اطلاعات کپی‌رایت و لینک‌های پایانی معمولاً در footer قرار می‌گیرند.

💻 نمونه کد
<footer>© 2026</footer>
👁 خروجی مثال
✍️ حالا نوبت توست

یک footer بساز.

✅ کد صحیح
<footer>© 2026</footer>
                
📖 فصل ۷ — جدول
27

ساخت جدول

درس 27 از 49
📖 آموزش

برای ساخت جدول از table استفاده می‌کنیم.

💡
نکته مهم

جدول برای نمایش داده‌های جدولی است، نه طراحی کلی صفحه.

💻 نمونه کد
<table>
<tr>
<td>سلام</td>
</tr>
</table>
👁 خروجی مثال
✍️ حالا نوبت توست

یک table بساز.

✅ کد صحیح
<table><tr><td>سلام</td></tr></table>
                
28

tr و td

درس 28 از 49
📖 آموزش

tr یک ردیف و td یک سلول معمولی جدول است.

💡
نکته مهم

td باید داخل tr قرار بگیرد.

💻 نمونه کد
<table>
<tr>
<td>نام</td>
</tr>
</table>
👁 خروجی مثال
✍️ حالا نوبت توست

جدولی بساز که یک tr و یک td داشته باشد.

✅ کد صحیح
<table><tr><td>نام</td></tr></table>
                
ساخت و توسعه معراج حداد ❤️
29

عنوان جدول با th

درس 29 از 49
📖 آموزش

th برای سلول عنوان جدول استفاده می‌شود.

💡
نکته مهم

th از نظر معنایی عنوان ستون یا ردیف را مشخص می‌کند.

💻 نمونه کد
<table>
<tr>
<th>نام</th>
</tr>
</table>
👁 خروجی مثال
✍️ حالا نوبت توست

یک جدول با یک th بساز.

✅ کد صحیح
<table><tr><th>نام</th></tr></table>
                
📖 فصل ۸ — فرم‌ها
30

ساخت form

درس 30 از 49
📖 آموزش

form برای دریافت اطلاعات از کاربر استفاده می‌شود.

💡
نکته مهم

یک فرم می‌تواند input، textarea، select و button داشته باشد.

💻 نمونه کد
<form>
<input type="text">
</form>
👁 خروجی مثال
✍️ حالا نوبت توست

یک form بساز و داخل آن input قرار بده.

✅ کد صحیح
<form><input type="text"></form>
                
31

input متنی

درس 31 از 49
📖 آموزش

input یکی از مهم‌ترین عناصر فرم است و type نوع ورودی را مشخص می‌کند.

💡
نکته مهم

برای دریافت متن معمولی از type="text" استفاده می‌کنیم.

💻 نمونه کد
<input type="text">
👁 خروجی مثال
✍️ حالا نوبت توست

یک input از نوع text بساز.

✅ کد صحیح
<input type="text">
                
32

label

درس 32 از 49
📖 آموزش

label عنوان یا توضیح یک ورودی فرم را مشخص می‌کند.

💡
نکته مهم

استفاده صحیح از label دسترسی‌پذیری فرم را بهتر می‌کند.

💻 نمونه کد
<label>نام</label>
👁 خروجی مثال
✍️ حالا نوبت توست

یک label با متن «نام» بساز.

✅ کد صحیح
<label>نام</label>
                
ساخت و توسعه معراج حداد ❤️
33

placeholder

درس 33 از 49
📖 آموزش

placeholder یک راهنمای کوتاه داخل input نمایش می‌دهد.

💡
نکته مهم

placeholder جای label را نمی‌گیرد؛ فقط راهنمای موقت است.

💻 نمونه کد
<input placeholder="نام خود را بنویس">
👁 خروجی مثال
✍️ حالا نوبت توست

یک input با placeholder «نام خود را بنویس» بساز.

✅ کد صحیح
<input placeholder="نام خود را بنویس">
                
34

required

درس 34 از 49
📖 آموزش

required باعث می‌شود کاربر نتواند آن فیلد را خالی ارسال کند.

💡
نکته مهم

required یک ویژگی Boolean است.

💻 نمونه کد
<input type="text" required>
👁 خروجی مثال
✍️ حالا نوبت توست

یک input اجباری بساز.

✅ کد صحیح
<input type="text" required>
                
35

textarea

درس 35 از 49
📖 آموزش

textarea برای دریافت متن‌های طولانی مانند پیام کاربر استفاده می‌شود.

💡
نکته مهم

در فرم تماس معمولاً برای پیام از textarea استفاده می‌شود.

💻 نمونه کد
<textarea></textarea>
👁 خروجی مثال
✍️ حالا نوبت توست

یک textarea بساز.

✅ کد صحیح
<textarea></textarea>
                
36

select و option

درس 36 از 49
📖 آموزش

select یک فهرست انتخابی ایجاد می‌کند و option گزینه‌های آن را مشخص می‌کند.

💡
نکته مهم

option باید داخل select قرار بگیرد.

💻 نمونه کد
<select>
<option>ایران</option>
</select>
👁 خروجی مثال
✍️ حالا نوبت توست

یک select با یک option بساز.

✅ کد صحیح
<select><option>ایران</option></select>
                
ساخت و توسعه معراج حداد ❤️
37

button

درس 37 از 49
📖 آموزش

button برای ساخت دکمه تعاملی استفاده می‌شود.

💡
نکته مهم

در فرم‌ها button می‌تواند برای ارسال فرم یا عملیات دیگر استفاده شود.

💻 نمونه کد
<button>ارسال</button>
👁 خروجی مثال
✍️ حالا نوبت توست

یک دکمه با متن «ارسال» بساز.

✅ کد صحیح
<button>ارسال</button>
                
📖 فصل ۹ — ویژگی‌ها
38

class

درس 38 از 49
📖 آموزش

class برای دسته‌بندی عناصر استفاده می‌شود و ارتباط HTML با CSS را ساده می‌کند.

💡
نکته مهم

یک class می‌تواند روی چند عنصر استفاده شود.

💻 نمونه کد
<p class="text">سلام</p>
👁 خروجی مثال
✍️ حالا نوبت توست

یک p با class برابر text بساز.

✅ کد صحیح
<p class="text">سلام</p>
                
39

id

درس 39 از 49
📖 آموزش

id یک شناسه برای شناسایی یک عنصر خاص است.

💡
نکته مهم

بهتر است یک id در صفحه منحصربه‌فرد باشد.

💻 نمونه کد
<div id="about">درباره ما</div>
👁 خروجی مثال
✍️ حالا نوبت توست

یک div با id برابر about بساز.

✅ کد صحیح
<div id="about">درباره ما</div>
                
40

class و id با هم

درس 40 از 49
📖 آموزش

یک عنصر می‌تواند همزمان class و id داشته باشد.

💡
نکته مهم

class برای گروه‌بندی و id برای شناسایی یک عنصر خاص کاربرد دارد.

💻 نمونه کد
<div id="box" class="card">محتوا</div>
👁 خروجی مثال
✍️ حالا نوبت توست

یک div بساز که id آن box و class آن card باشد.

✅ کد صحیح
<div id="box" class="card">محتوا</div>
                
ساخت و توسعه معراج حداد ❤️
📖 فصل ۱۰ — HTML و سئو
41

زبان صفحه با lang

درس 41 از 49
📖 آموزش

ویژگی lang زبان اصلی سند HTML را مشخص می‌کند.

💡
نکته مهم

برای یک صفحه فارسی معمولاً lang="fa" استفاده می‌شود.

💻 نمونه کد
<html lang="fa">
👁 خروجی مثال
✍️ حالا نوبت توست

یک html با lang فارسی بساز.

✅ کد صحیح
<html lang="fa">
                
42

meta description

درس 42 از 49
📖 آموزش

meta description خلاصه‌ای از محتوای صفحه را مشخص می‌کند.

💡
نکته مهم

این meta معمولاً داخل head قرار می‌گیرد.

💻 نمونه کد
<meta name="description" content="آموزش HTML">
👁 خروجی مثال
✍️ حالا نوبت توست

یک meta description برای آموزش HTML بساز.

✅ کد صحیح
<meta name="description" content="آموزش HTML">
                
43

ساختار Heading و سئو

درس 43 از 49
📖 آموزش

استفاده منطقی از h1، h2 و h3 به ساختار بهتر محتوا کمک می‌کند.

💡
نکته مهم

عنوان را فقط برای بزرگ کردن نوشته استفاده نکن؛ عنوان باید نقش معنایی داشته باشد.

💻 نمونه کد
<h1>سایت من</h1>
<h2>خدمات</h2>
👁 خروجی مثال
✍️ حالا نوبت توست

یک h1 و سپس یک h2 ایجاد کن.

✅ کد صحیح
<h1>سایت من</h1><h2>خدمات</h2>
                
📖 فصل ۱۱ — پروژه نهایی
44

ساخت Header سایت

درس 44 از 49
📖 آموزش

حالا آموخته‌ها را در یک ساختار واقعی سایت استفاده می‌کنیم.

💡
نکته مهم

Header می‌تواند شامل عنوان یا لوگوی سایت باشد.

💻 نمونه کد
<header>
<h1>سایت من</h1>
</header>
👁 خروجی مثال
✍️ حالا نوبت توست

یک header با h1 بساز.

✅ کد صحیح
<header><h1>سایت من</h1></header>
                
ساخت و توسعه معراج حداد ❤️
45

ساخت منوی سایت

درس 45 از 49
📖 آموزش

منوی سایت را می‌توان با nav و لینک‌های a ساخت.

💡
نکته مهم

هر لینک منو باید مقصد مشخصی داشته باشد.

💻 نمونه کد
<nav>
<a href="/">خانه</a>
<a href="/about">درباره ما</a>
</nav>
👁 خروجی مثال
✍️ حالا نوبت توست

یک nav با حداقل دو لینک بساز.

✅ کد صحیح
<nav><a href="/">خانه</a><a href="/about">درباره ما</a></nav>
                
46

ساخت بخش معرفی

درس 46 از 49
📖 آموزش

یک section می‌تواند یک بخش مستقل از صفحه را نمایش دهد.

💡
نکته مهم

در اینجا از h2 و p برای عنوان و توضیح استفاده می‌کنیم.

💻 نمونه کد
<section>
<h2>درباره ما</h2>
<p>سلام</p>
</section>
👁 خروجی مثال
✍️ حالا نوبت توست

یک section بساز که h2 و p داشته باشد.

✅ کد صحیح
<section><h2>درباره ما</h2><p>سلام</p></section>
                
47

ساخت کارت خدمات

درس 47 از 49
📖 آموزش

با ترکیب div، class، h3 و p می‌توان یک کارت ساده ساخت.

💡
نکته مهم

بعداً با CSS می‌توان همین کارت را به یک کارت حرفه‌ای تبدیل کرد.

💻 نمونه کد
<div class="card">
<h3>طراحی سایت</h3>
<p>طراحی حرفه‌ای</p>
</div>
👁 خروجی مثال
✍️ حالا نوبت توست

یک div با class card بساز که h3 و p داشته باشد.

✅ کد صحیح
<div class="card"><h3>طراحی سایت</h3><p>طراحی حرفه‌ای</p></div>
                
48

ساخت فرم تماس

درس 48 از 49
📖 آموزش

اکنون یک فرم تماس ساده با چند عنصر مهم HTML می‌سازیم.

💡
نکته مهم

در پروژه‌های واقعی، PHP یا JavaScript می‌تواند اطلاعات فرم را پردازش کند.

💻 نمونه کد
<form>
<label>نام</label>
<input type="text">
<textarea></textarea>
<button>ارسال</button>
</form>
👁 خروجی مثال
✍️ حالا نوبت توست

فرمی بساز که label، input، textarea و button داشته باشد.

✅ کد صحیح
<form><label>نام</label><input type="text"><textarea></textarea><button>ارسال</button></form>
                
ساخت و توسعه معراج حداد ❤️
49

پروژه نهایی HTML

درس 49 از 49
📖 آموزش

تبریک! حالا باید آموخته‌هایت را کنار هم قرار بدهی و یک صفحه واقعی HTML بسازی.

💡
نکته مهم

سعی کن از header، nav، main، section و footer استفاده کنی.

💻 نمونه کد
<header>...</header>
<nav>...</nav>
<main>
<section>...</section>
</main>
<footer>...</footer>
👁 خروجی مثال
✍️ حالا نوبت توست

صفحه‌ای بساز که header، nav، main، section و footer داشته باشد.

✅ کد صحیح
<header><h1>سایت من</h1></header><nav><a href="/">خانه</a></nav><main><section><h2>درباره ما</h2><p>سلام</p></section></main><footer>© 2026</footer>
                
🏆

تبریک! دوره را تمام کردی

تو با مفاهیم اصلی HTML، متن، لینک، تصویر، لیست، جدول، فرم، ساختار معنایی و اصول اولیه سئو آشنا شدی.

حالا آماده‌ای CSS را یاد بگیری و صفحاتت را زیبا کنی ❤️
'+ ''+ exampleCode[index]+ ''+ ''; const editor= card.querySelector('.mh-editor'); const check= card.querySelector('.mh-check'); const preview= card.querySelector('.mh-preview'); const result= card.querySelector('.mh-result'); const correct= card.querySelector('.mh-correct'); const userOutput= card.querySelector('.mh-user-output'); /* --------------------------------------------- بررسی جواب --------------------------------------------- */ check.addEventListener('click',function(){ const code= editor.value.trim(); if(!code){ result.className= 'mh-result bad'; result.innerHTML= '⚠️ ابتدا کد HTML خودت را در کادر بنویس.'; return; } const doc= new DOMParser() .parseFromString( code, 'text/html' ); let ok=false; switch(index){ case 0: ok= doc.querySelector('h1') && doc.querySelector('h1') .textContent.trim()==='سلام دنیا'; break; case 1: ok= doc.querySelector('p') && doc.querySelector('p') .textContent.trim()==='متن من'; break; case 2: ok= /]/i.test(code) && /]/i.test(code) && /]/i.test(code); break; case 3: ok= //i.test(code); break; case 4: ok= doc.querySelector('title') && doc.querySelector('title') .textContent.trim()==='سایت من'; break; case 5: ok= doc.querySelector('h1') && doc.querySelector('h1') .textContent.trim()==='آموزش HTML'; break; case 6: ok= doc.querySelector('h2') && doc.querySelector('h2') .textContent.trim()==='بخش اول'; break; case 7: ok= doc.querySelector('p') && doc.querySelector('p') .textContent.trim()==='من HTML یاد می‌گیرم.'; break; case 8: ok=!!doc.querySelector('br'); break; case 9: ok= doc.querySelector('strong') && doc.querySelector('strong') .textContent.trim()==='مهم'; break; case 10: ok=!!doc.querySelector('a[href]'); break; case 11: ok= !!doc.querySelector( 'a[href="https://google.com"]' ); break; case 12: ok= !!doc.querySelector( 'a[target="_blank"]' ); break; case 13: ok= !!doc.querySelector( 'img[src][alt]' ); break; case 14: ok= !!doc.querySelector( 'img[alt="عکس طبیعت"]' ); break; case 15: ok= !!doc.querySelector( 'video[controls]' ); break; case 16: ok= !!doc.querySelector( 'audio[controls]' ); break; case 17: ok= doc.querySelectorAll( 'ul li' ).length>=2; break; case 18: ok= doc.querySelectorAll( 'ol li' ).length>=2; break; case 19: ok= !!doc.querySelector( 'div p' ); break; case 20: ok=!!doc.querySelector('span'); break; case 21: ok= !!doc.querySelector( 'header h1' ); break; case 22: ok= !!doc.querySelector( 'nav a' ); break; case 23: ok= !!doc.querySelector( 'main h1' ); break; case 24: ok= !!doc.querySelector( 'section article' ); break; case 25: ok=!!doc.querySelector('footer'); break; case 26: ok=!!doc.querySelector('table'); break; case 27: ok= !!doc.querySelector( 'tr td' ); break; case 28: ok=!!doc.querySelector('th'); break; case 29: ok= !!doc.querySelector( 'form input' ); break; case 30: ok= !!doc.querySelector( 'input[type="text"]' ); break; case 31: ok= doc.querySelector('label') && doc.querySelector('label') .textContent.trim()==='نام'; break; case 32: ok= !!doc.querySelector( 'input[placeholder="نام خود را بنویس"]' ); break; case 33: ok= !!doc.querySelector( 'input[required]' ); break; case 34: ok=!!doc.querySelector('textarea'); break; case 35: ok= !!doc.querySelector( 'select option' ); break; case 36: ok= doc.querySelector('button') && doc.querySelector('button') .textContent.trim()==='ارسال'; break; case 37: ok= !!doc.querySelector( 'p.text' ); break; case 38: ok= !!doc.querySelector( '#about' ); break; case 39: ok= !!doc.querySelector( '#box.card' ); break; case 40: ok= !!doc.querySelector( 'html[lang="fa"]' ); break; case 41: ok= !!doc.querySelector( 'meta[name="description"]' ); break; case 42: ok= !!doc.querySelector('h1') && !!doc.querySelector('h2'); break; case 43: ok= !!doc.querySelector( 'header h1' ); break; case 44: ok= doc.querySelectorAll( 'nav a' ).length>=2; break; case 45: ok= !!doc.querySelector( 'section h2' ) && !!doc.querySelector( 'section p' ); break; case 46: ok= !!doc.querySelector( 'div.card h3' ) && !!doc.querySelector( 'div.card p' ); break; case 47: ok= !!doc.querySelector( 'form label' ) && !!doc.querySelector( 'form input' ) && !!doc.querySelector( 'form textarea' ) && !!doc.querySelector( 'form button' ); break; case 48: ok= !!doc.querySelector('header') && !!doc.querySelector('nav') && !!doc.querySelector('main') && !!doc.querySelector('section') && !!doc.querySelector('footer'); break; } if(ok){ result.className= 'mh-result good'; result.innerHTML= '🎉 آفرین! پاسخ تو درست است. '+ 'این درس را با موفقیت یاد گرفتی ❤️'; correct.classList.remove('show'); if(!completed.includes(index)){ completed.push(index); } updateProgress(); }else{ result.className= 'mh-result bad'; result.innerHTML= '❌ پاسخ هنوز درست نیست.
'+ '💡 راهنمایی: '+ ["\u0627\u0632 \u062a\u06af h1 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646 \u0648 \u0639\u0628\u0627\u0631\u062a \u00ab\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627\u00bb \u0631\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0645\u062a\u0646 \u0631\u0627 \u0628\u06cc\u0646 \u062a\u06af\u200c\u0647\u0627\u06cc p \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0647\u0631 \u0633\u0647 \u0628\u062e\u0634 html\u060c head \u0648 body \u0628\u0627\u06cc\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.","\u06a9\u062f HTML5 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a.","\u0627\u0632 \u062a\u06af title \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u0627\u0632 h1 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646 \u0648 \u0645\u062a\u0646 \u0622\u0645\u0648\u0632\u0634 HTML \u0631\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0628\u0647 \u062c\u0627\u06cc h1 \u0627\u0632 h2 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u0645\u062a\u0646 \u0631\u0627 \u0628\u06cc\u0646

\u0648 <\/p> \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0628\u06cc\u0646 \u062f\u0648 \u0645\u062a\u0646 \u0627\u0632
\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u0627\u0632 \u062a\u06af strong \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u062a\u06af a \u0628\u0627\u06cc\u062f \u062f\u0627\u0631\u0627\u06cc href \u0628\u0627\u0634\u062f.","\u0645\u0642\u062f\u0627\u0631 href \u0628\u0627\u06cc\u062f https:\/\/google.com \u0628\u0627\u0634\u062f.","target \u0631\u0627 \u0628\u0631\u0627\u0628\u0631 _blank \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0647\u0631 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc src \u0648 alt \u0631\u0627 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0645\u0642\u062f\u0627\u0631 alt \u0628\u0627\u06cc\u062f \u00ab\u0639\u06a9\u0633 \u0637\u0628\u06cc\u0639\u062a\u00bb \u0628\u0627\u0634\u062f.","\u0648\u06cc\u0698\u06af\u06cc controls \u0631\u0627 \u0628\u0647 video \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646.","\u0627\u0632 audio \u0648 \u0648\u06cc\u0698\u06af\u06cc controls \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u062f\u0627\u062e\u0644 ul \u062d\u062f\u0627\u0642\u0644 \u062f\u0648 li \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0627\u0632 ol \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646 \u0648 \u062d\u062f\u0627\u0642\u0644 \u062f\u0648 li \u062f\u0627\u062e\u0644 \u0622\u0646 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","p \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 div \u0628\u0627\u0634\u062f.","\u0627\u0632 \u062a\u06af span \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","h1 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 header \u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.","\u06cc\u06a9 a \u0631\u0627 \u062f\u0627\u062e\u0644 nav \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","h1 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 main \u0628\u0627\u0634\u062f.","article \u0631\u0627 \u062f\u0627\u062e\u0644 section \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0627\u0632 \u062a\u06af footer \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","\u0627\u0632 \u062a\u06af table \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","td \u0631\u0627 \u062f\u0627\u062e\u0644 tr \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0627\u0632 th \u0628\u0631\u0627\u06cc \u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","input \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 form \u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.","\u0645\u0642\u062f\u0627\u0631 type \u0628\u0627\u06cc\u062f text \u0628\u0627\u0634\u062f.","\u0645\u062a\u0646 \u0646\u0627\u0645 \u0631\u0627 \u062f\u0627\u062e\u0644 label \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0648\u06cc\u0698\u06af\u06cc placeholder \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646.","\u0648\u06cc\u0698\u06af\u06cc required \u0631\u0627 \u0628\u0647 input \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646.","\u0627\u0632 \u062a\u06af textarea \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.","option \u0631\u0627 \u062f\u0627\u062e\u0644 select \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0645\u062a\u0646 \u0627\u0631\u0633\u0627\u0644 \u0631\u0627 \u062f\u0627\u062e\u0644 button \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","class \u0631\u0627 \u0631\u0648\u06cc p \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","id \u0639\u0646\u0635\u0631 \u0628\u0627\u06cc\u062f about \u0628\u0627\u0634\u062f.","\u0647\u0631 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc id \u0648 class \u0631\u0627 \u0631\u0648\u06cc div \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u0648\u06cc\u0698\u06af\u06cc lang \u0631\u0627 \u0628\u0631\u0627\u0628\u0631 fa \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","meta \u0628\u0627\u06cc\u062f name=\"description\" \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.","\u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9 h1 \u0648 \u06cc\u06a9 h2 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634.","h1 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 header \u0628\u0627\u0634\u062f.","\u062f\u0627\u062e\u0644 nav \u062d\u062f\u0627\u0642\u0644 \u062f\u0648 \u0644\u06cc\u0646\u06a9 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","\u062f\u0627\u062e\u0644 section \u06cc\u06a9 h2 \u0648 \u06cc\u06a9 p \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.","div \u0628\u0627\u06cc\u062f class=\"card\" \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 h3 \u0648 p \u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u0627\u0634\u0646\u062f.","\u0647\u0631 \u0686\u0647\u0627\u0631 \u0639\u0646\u0635\u0631 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 form \u0628\u0627\u0634\u0646\u062f.","\u067e\u0646\u062c \u0628\u062e\u0634 header\u060c nav\u060c main\u060c section \u0648 footer \u0631\u0627 \u062f\u0631 \u06a9\u062f\u062a \u0642\u0631\u0627\u0631 \u0628\u062f\u0647."][index]+ '

'+ 'کد صحیح را پایین ببین و دوباره تلاش کن.'; correct.classList.add('show'); } }); /* --------------------------------------------- پیش‌نمایش کد کاربر --------------------------------------------- */ preview.addEventListener('click',function(){ const code= editor.value.trim(); if(!code){ result.className= 'mh-result bad'; result.innerHTML= '⚠️ ابتدا کد HTML را بنویس.'; return; } userOutput.srcdoc= ''+ ''+ ''+ ''+ ''+ ' '+ ''+ code+ ''+ ''; userOutput.classList.add('show'); }); }); updateProgress(); });