بستن

HTML چیست و چطور کار می‌کند؟ (جلسه ۱)

HTML چیست، زبان نشانه‌گذاری وب که ساختار صفحات را می‌سازد

HTML زبان نشانه‌گذاری استاندارد وب است که با کمک تگ‌ها به هر تکه از محتوای یک صفحه یک نقش می‌دهد: این یکی عنوان است، آن یکی پاراگراف، آن یکی پیوند. تیم برنرز-لی آن را در سال ۱۹۹۱ در CERN معرفی کرد و امروز هر صفحه‌ای که در مرورگرت باز می‌شود، در پایه‌ترین لایه‌اش HTML است.

این جلسه به تو نمی‌گوید چطور کد بنویسی. آن کار از جلسهٔ سوم شروع می‌شود. اینجا می‌فهمی HTML چیست، چه کاری می‌کند و چرا شکل امروزی‌اش این‌طور شده.

HTML چیست و دقیقاً چه کاری می‌کند؟

HTML به مرورگر می‌گوید هر بخش از محتوا چه نقشی دارد. وقتی می‌نویسی یک تکه متن «عنوان» است، مرورگر می‌داند باید آن را برجسته نشان بدهد، گوگل می‌داند موضوع صفحه چیست و صفحه‌خوان می‌داند باید آن را به‌عنوان سرفصل اعلام کند. یک ورودی، سه مصرف‌کنندهٔ کاملاً متفاوت.

HTML مخفف چه عبارتی است؟

مخفف HyperText Markup Language است. هر سه بخشش معنا دارد و اگر معنایشان را بفهمی، خیلی از سؤال‌های بعدی خودبه‌خود جواب می‌گیرند.

بخشترجمهدر عمل یعنی چه
HyperTextابرمتنمتنی که می‌تواند با پیوند به هر متن دیگری روی اینترنت وصل شود. همان چیزی که وب را وب کرد.
Markupنشانه‌گذاریمحتوا را با نشانه‌هایی به‌اسم تگ علامت می‌زنی تا نقشش مشخص شود.
Languageزبانمجموعه‌ای از قواعد مشخص و مستند که همهٔ مرورگرها یکسان می‌فهمند.

نشانه‌گذاری یعنی چه؟

یعنی محتوا را داخل تگ می‌گذاری تا نقشش معلوم شود. تگ یک برچسب است که با < باز و با > بسته می‌شود. بیشتر تگ‌ها جفتی‌اند: یکی برای شروع و یکی برای پایان، که با اسلش مشخص می‌شود.

این سه خط را نگاه کن:

<h1>چای بهارهٔ لاهیجان</h1>
<p>برداشت اردیبهشت، بدون اسانس افزوده.</p>
<a href="/products/lahijan/">مشاهدهٔ محصول</a>

بدون تگ‌ها، هر سه خط فقط متن خام بودند و مرورگر پشت سر هم و یکسان نشانشان می‌داد. با تگ‌ها، خط اول عنوان اصلی شد، خط دوم پاراگراف، و خط سوم لینکی که کلیک می‌شود. محتوا عوض نشد؛ فقط نقشش اعلام شد.

آن href داخل تگ سوم یک «ویژگی» است. تگ می‌گوید این یک پیوند است و ویژگی می‌گوید به کجا. جزئیاتش را در جلسهٔ تگ a می‌بینی.

HTML زبان برنامه‌نویسی است؟

نه. HTML شرط، حلقه، تابع و متغیر ندارد، پس چیزی را محاسبه یا تصمیم‌گیری نمی‌کند. زبان نشانه‌گذاری است، نه برنامه‌نویسی. ولی این را با «ساده بودن» یکی نگیر: مشخصات رسمی HTML هزاران صفحه است و انتخاب درست تگ‌ها یکی از مهارت‌های سخت این حوزه است.

HTML را چه کسی و کِی ساخت؟

تیم برنرز-لی، فیزیک‌دان بریتانیایی، در CERN. او دنبال راهی بود که پژوهشگرها اسنادشان را به هم پیوند بدهند و مجبور نباشند فایل دست‌به‌دست کنند. نتیجه‌اش سه چیز بود که با هم وب را ساختند: HTML برای ساختار، HTTP برای انتقال و URL برای آدرس‌دهی.

اولین سند رسمی HTML در پایان سال ۱۹۹۱ منتشر شد و فقط ۱۸ عنصر داشت. اولین وب‌سایت دنیا هنوز آنلاین است و می‌توانی ببینی با همان ابزار محدود چه شکلی بوده. یازده تا از آن ۱۸ عنصر امروز هم دقیقاً کار می‌کنند.

نسخه‌های HTML به چه ترتیبی آمدند؟

HTML سه دهه تغییر کرده، ولی نه به شکلی که هر نسخه قبلی را دور بریزد. تقریباً همه‌چیز روی هم انباشته شده و کدی که در سال ۱۹۹۹ نوشته شده، امروز هم در مرورگر باز می‌شود.

نسخهسالمهم‌ترین تغییر
HTML اولیه۱۹۹۱۱۸ عنصر پایه، پیوند و پاراگراف. شروع همه‌چیز.
HTML 2.0۱۹۹۵اولین استاندارد رسمی و مکتوب. فرم‌ها اضافه شدند.
HTML 3.2۱۹۹۷جدول و تگ‌های ظاهری مثل font، که بعدها همه منسوخ شدند.
HTML 4.01۱۹۹۹جداکردن ظاهر از ساختار و سپردن ظاهر به CSS.
XHTML 1.0۲۰۰۰قواعد سخت‌گیرانهٔ XML. تجربه‌ای که در عمل جواب نداد.
HTML5۲۰۱۴ویدیو، صدا، canvas و تگ‌های معنایی مثل article و nav.
استاندارد زندهاز ۲۰۱۹شماره‌گذاری حذف شد. استاندارد به‌صورت پیوسته به‌روز می‌شود.

آیا HTML6 وجود دارد؟

نه، و قرار هم نیست بیاید. در سال ۲۰۱۹ توافقی بین W3C و WHATWG امضا شد که بر اساس آن، تنها نسخهٔ معتبر HTML همان استاندارد زندهٔ WHATWG است. استاندارد زنده شماره ندارد؛ هر تغییر مستقیم به خودش اضافه می‌شود.

خیلی جاها می‌بینی که از «HTML6 و تگ‌های هوش مصنوعی» حرف می‌زنند. این دقیق نیست. هر ویژگی جدیدی که در سال‌های اخیر آمده، مثل تگ dialog یا تگ details، بدون هیچ شمارهٔ نسخه‌ای وارد همان استاندارد زنده شده.

پس اگر منبعی دیدی که «آموزش HTML6» می‌فروشد یا HTML و HTML5 را دو دورهٔ جدا معرفی می‌کند، بدان محتوایش به‌روز نیست.

HTML، CSS و جاوااسکریپت چه فرقی دارند؟

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

به همین دلیل HTML همیشه اول یاد گرفته می‌شود. سراغ آموزش CSS برو، ولی نه قبل از اینکه دست‌کم تا جلسهٔ چهاردهم این دوره پیش رفته باشی.

اشتباه‌های رایج تازه‌کارها دربارهٔ HTML

این‌ها اشتباه کدنویسی نیستند، اشتباه در فهم‌اند. و چون در همان روزهای اول شکل می‌گیرند، سال‌ها با آدم می‌مانند.

تصور غلطواقعیت
HTML زبان برنامه‌نویسی استنه. منطق و محاسبه ندارد. کارش توصیف ساختار محتواست.
HTML5 چیز جدایی است که باید جدا یاد گرفتچیزی که امروز HTML می‌نامیم همان HTML5 و بعد از آن است. دورهٔ جداگانه ندارد.
HTML6 دارد می‌آیدوجود ندارد. شماره‌گذاری نسخه از ۲۰۱۹ کنار گذاشته شده.
تگ را بر اساس ظاهرش انتخاب می‌کنیمتگ را بر اساس معنایش انتخاب می‌کنی. ظاهر را با CSS عوض می‌کنی.
اگر کد اشتباه باشد مرورگر خطا می‌دهدمرورگر خطا نمی‌دهد، حدس می‌زند. برای همین باید کد را با اعتبارسنج چک کنی.
هرچه تگ بیشتر، حرفه‌ای‌ترکمترین تگی که معنا را برساند، بهترین است. تگ اضافه فقط پیچیدگی می‌سازد.

من شخصاً روی مورد چهارم بیشتر از بقیه حساسم. کسی که h1 را انتخاب می‌کند چون «بزرگ‌تر است»، همان کسی است که شش ماه بعد نمی‌فهمد چرا ساختار سایتش برای گوگل قابل فهم نیست.

HTML و دسترس‌پذیری از همین جلسهٔ اول

دسترس‌پذیری یک لایهٔ اضافه نیست که بعداً روی سایت بگذاری. خود HTML همان لایه است. وقتی می‌نویسی <button>، صفحه‌خوان می‌گوید «دکمه»، کاربر با Tab به آن می‌رسد و با Enter فعالش می‌کند. همهٔ این‌ها رایگان و بدون یک خط کد اضافه.

حالا اگر همان دکمه را با <div> بسازی، ظاهرش با CSS دقیقاً همان می‌شود، ولی کاربر نابینا اصلاً نمی‌فهمد آنجا دکمه‌ای هست. این تفاوت، در تمامی جلسات این دوره تکرار می‌شود.

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

مرورگرها چقدر HTML را پشتیبانی می‌کنند؟

سؤال «آیا مرورگر من HTML5 را پشتیبانی می‌کند» دیگر معنا ندارد. همهٔ مرورگرهای امروزی، از کروم و فایرفاکس تا سافاری و اج، ساختار پایهٔ HTML را کامل پشتیبانی می‌کنند. چیزی که ممکن است متفاوت باشد، تگ‌ها و ویژگی‌های تازه‌واردند، نه خود زبان.

در جلسه‌هایی که سراغ تگ‌های جدیدتر می‌رویم، وضعیت پشتیبانی هرکدام را جداگانه می‌گویم. برای بررسی خودت هم مرجع عناصر HTML در MDN جدول پشتیبانی هر تگ را دارد.

سؤالات متداول

HTML مخفف چیست؟

مخفف HyperText Markup Language، یعنی زبان نشانه‌گذاری ابرمتن. ابرمتن به متنی گفته می‌شود که با پیوند به متن‌های دیگر وصل می‌شود، و نشانه‌گذاری یعنی مشخص‌کردن نقش هر بخش از محتوا با تگ.

HTML6 کی می‌آید؟

نمی‌آید. از سال ۲۰۱۹ استاندارد HTML به شکل زنده و بدون شمارهٔ نسخه توسط WHATWG نگه‌داری می‌شود. ویژگی‌های جدید مستقیم به همان استاندارد اضافه می‌شوند، بدون اینکه نسخهٔ تازه‌ای اعلام شود.

تفاوت تگ و عنصر چیست؟

تگ همان نشانهٔ داخل علامت کوچک‌تر و بزرگ‌تر است. عنصر یعنی مجموعهٔ کامل: تگ باز، محتوا و تگ بسته. در <p>سلام</p> دو تا تگ داری و یک عنصر.

یادگیری HTML سخت است؟

شروعش نه. در چند روز می‌توانی صفحهٔ ساده بسازی. سخت‌ترین بخشش انتخاب تگ درست بین چند گزینهٔ به‌ظاهر مشابه است، و آن با تمرین و دیدن مثال واقعی می‌آید نه با حفظ‌کردن فهرست تگ‌ها.

HTML را کجا بنویسم؟

در هر ویرایشگر متنی. حتی Notepad. نه به هاست نیاز داری نه به نصب چیزی؛ فایل را با پسوند .html ذخیره می‌کنی و در مرورگر بازش می‌کنی. تنظیم محیط کار را در جلسهٔ سوم کامل توضیح داده‌ایم.

HTML بدون CSS به چه دردی می‌خورد؟

صفحهٔ بدون CSS باز می‌شود، خوانده می‌شود، ایندکس می‌شود و با صفحه‌خوان کار می‌کند. فقط زشت است. برعکسش صادق نیست: CSS بدون HTML چیزی برای استایل‌دادن ندارد.

چند تا تگ HTML وجود دارد؟

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

آیا HTML برای سئو مهم است؟

بله. عنوان صفحه، ساختار سرفصل‌ها، متن جایگزین تصویر و لینک‌های داخلی همه در لایهٔ HTML نوشته می‌شوند. گوگل صفحه را از روی همین ساختار می‌فهمد، نه از روی ظاهرش.

جمع‌بندی و قدم بعدی

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

حالا که فهمیدی HTML چیست، وقتش است ببینی یک سند HTML از چه بخش‌هایی ساخته می‌شود.

سؤالی برایت باقی مانده؟

اگر جایی از این جلسه گنگ بود، همین پایین بنویس. جواب می‌دهم و اگر سؤالت تکرار شود، متن جلسه را اصلاح می‌کنم.

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

شهرام نجفی

شهرام نجفی

شهرام نجفی — بیش از ۱۵ سال طراحی و توسعهٔ وب به‌صورت فریلنس. قالب اختصاصی آوای وب را از صفر نوشته‌ام. مطالب این سایت را بر پایهٔ مستندات رسمی MDN و WHATWG می‌نویسم و قبل از انتشار در مرورگرهای واقعی تست می‌کنم. نمونه‌کارهایم در shahramnajafi.com است.

نظر شما در این مورد چیه؟

2 دیدگاه

  1. Hosseinhosseini
    Hosseinhosseini

    استاد نجفی عزیز خدا قوت

    1. شهرام نجفی
      شهرام نجفی