HTML asoslari: teglar va elementlar

Oldingi darsda birinchi index.html faylingizni yaratdingiz. Uning ichida < va > belgilari bilan yozilgan «sirli» so'zlar bor edi. Bu darsda ular nima ekanini — teglar va elementlarni — tushunib olamiz. HTML har qanday veb-sahifaning poydevori: usiz na CSS, na JavaScript ishlaydi.

Bu darsda

  • HTML nima va nega u dasturlash tili emas
  • Teg, element va atribut tushunchalari
  • Sarlavhalar, xatboshilar, qator ko'chirish va ajratuvchi chiziq
  • Elementlarni ichma-ich to'g'ri joylash
  • Har bir HTML sahifaning asosiy tuzilishi
  • Izohlar va bo'sh joylar qanday ishlashi

HTML nima?

HTML — inglizcha HyperText Markup Language so'zlarining qisqartmasi. Tarjimasi — «gipermatnni belgilash tili». Har bir so'zni alohida ko'raylik:

Nashriyotda muharrir qo'lyozmaga qalam bilan belgi qo'yib chiqadi: «bu — kitob nomi», «bu yerdan yangi xatboshi», «bu so'z — qalin». Matn teruvchi esa shu belgilarga qarab kitobni chiroyli qilib teradi. HTML'da siz — muharrir, brauzer esa — matn teruvchi.

Buni amalda ko'raylik. Quyidagi muharrirda bir xil matn ikki marta yozilgan: tepada — belgilarsiz, pastda — HTML belgilari bilan.

Mening sevimli shahrim
Samarqand — dunyodagi eng qadimiy shaharlardan biri.

<h1>Mening sevimli shahrim</h1>
<p>Samarqand — dunyodagi eng qadimiy shaharlardan biri.</p>

Belgilarsiz matn bitta qatorga qo'shilib ketdi: brauzer qaysi qism sarlavha ekanini bilmaydi. Belgilangan matnda esa sarlavha katta va qalin, xatboshi — alohida. Biz brauzerga «bu — sarlavha» deb aytdik, u esa buni tushundi.

HTML — dasturlash tili emas. Unda hisoblash, «agar … bo'lsa» degan shartlar yoki takrorlash yo'q. HTML faqat mazmunni tasvirlaydi: nima qayerda turadi va u nima. Shuning uchun uni o'rganish juda oson. Hisoblash va mantiq JavaScript'ning ishi — u bilan 13-darsdan tanishamiz.

Teg va element

HTML'dagi har bir belgi — teg (inglizcha tag — «yorliq»). Teg burchakli qavslar < > ichiga yozilgan nomdan iborat. Ko'p teglar juft bo'ladi: biri boshlanishni, ikkinchisi tugashni bildiradi.

p elementining qismlari: ochuvchi teg, mazmun va yopuvchi teg. Uchalasi birga element deyiladi. element <p> Salom </p> ochuvchi teg mazmun yopuvchi teg opening tag content closing tag
Element = ochuvchi teg + mazmun + yopuvchi teg.

Brauzer teglarning o'zini ekranda ko'rsatmaydi — faqat mazmunni ko'rsatadi, lekin uni teg aytganidek bezaydi. Teg — bu brauzer uchun yo'riqnoma.

Juft teglar matndagi qo'shtirnoqlarga o'xshaydi: ochuvchi qo'shtirnoq iqtibos qayerdan boshlanishini, yopuvchisi esa qayerda tugashini ko'rsatadi. Yopuvchi qo'shtirnoqni unutsangiz, iqtibos qayerda tugagani noma'lum bo'lib qoladi — teglarda ham xuddi shunday.

Teg nomlarida katta-kichik harf farq qilmaydi: <P> ham, <p> ham ishlaydi. Lekin hamma dasturchilar kichik harf bilan yozadi — siz ham shunday qiling.

Sarlavhalar: h1 dan h6 gacha

Sarlavhalar uchun oltita teg bor: <h1> dan <h6> gacha (h — inglizcha heading, «sarlavha»). Raqam qancha kichik bo'lsa, sarlavha shuncha muhim.

<h1>1-darajali sarlavha — sahifa nomi</h1>
<h2>2-darajali — katta bo'lim</h2>
<h3>3-darajali — kichik bo'lim</h3>
<h4>4-darajali sarlavha</h4>
<h5>5-darajali sarlavha</h5>
<h6>6-darajali sarlavha</h6>
<p>Bu esa oddiy xatboshi.</p>

Sarlavhalar kitobning mundarijasiga o'xshaydi: kitob nomi, boblar, bo'limlar. Masalan, shaharlar haqidagi sahifa shunday tuziladi:

h1  O'zbekiston shaharlari
    h2  Samarqand
        h3  Registon maydoni
        h3  Shohi Zinda
    h2  Buxoro
        h3  Ark qal'asi

Sarlavhani o'lchami uchun emas, ma'nosi uchun tanlang. «Bu matn kattaroq bo'lsin» deb <h1> yozmang — o'lcham va rangni CSS bilan o'zgartiramiz (8–9-darslar). Qidiruv tizimlari (masalan, Google) va ko'zi ojiz foydalanuvchilarning ekran o'quvchi dasturlari (screen reader) sahifa tuzilishini aynan sarlavhalarga qarab tushunadi.

Uchta oddiy qoida:

  1. Sahifada bitta <h1> bo'lsin — bu sahifaning nomi.
  2. Darajalarni tartib bilan ishlating: <h2> dan keyin to'g'ridan-to'g'ri <h4> ga sakramang.
  3. Amalda ko'pincha h1, h2 va h3 yetarli bo'ladi.

Xatboshi, qator ko'chirish va chiziq

Matnning asosiy qismi <p> — xatboshi elementlarida yoziladi. Brauzer xatboshilar orasiga o'zi bo'sh joy qo'yadi. Yana ikkita foydali teg bor:

<h2>Manzil</h2>
<p>Toshkent shahri,<br>
Yunusobod tumani,<br>
Bog'ishamol ko'chasi, 12-uy</p>

<hr>

<h2>Maqollar</h2>
<p>Ilm olish — igna bilan quduq qazish.</p>
<p>Bilim — bitmas xazina.</p>

Manzil bitta xatboshi, lekin <br> tufayli uch qatorga bo'lindi. Ikki maqol esa ikki alohida xatboshi — ular orasida bo'sh joy bor. <hr> ikki mavzuni chiziq bilan ajratdi.

<br> ni xatboshilar orasida bo'sh joy hosil qilish uchun ishlatmang (<br><br><br>). Yangi fikr — yangi <p>, oraliqlarni esa CSS boshqaradi.

Bo'sh elementlar

E'tibor berdingizmi: <br> va <hr> ning yopuvchi tegi yo'q. Ularning ichiga hech narsa yozilmaydi — mazmuni yo'q. Bunday elementlar bo'sh elementlar (inglizcha void elements) deyiladi. Ular ko'p emas, eng ko'p uchraydiganlari: <br>, <hr>, <img> (rasm), <input> (kiritish maydoni), <meta> va <link>.

Ba'zi kodlarda <br /> yoki <img ... /> kabi oxirida qiya chiziqli yozuvni ko'rasiz. Bu eski uslub — HTML'da ikkalasi ham ishlaydi. Biz qisqa shaklini, <br> ni ishlatamiz.

Ichma-ich joylash

Elementlar bir-birining ichida tura oladi. Masalan, xatboshi ichidagi bitta so'zni ajratib ko'rsatish uchun uni <strong> (muhim, qalin) ichiga olamiz:

<p>Darsga <strong>soat 9 da</strong> keling.</p>

Bu yerda <strong> elementi <p> elementining ichida. Bunda <p> — ota element (inglizcha parent), <strong> esa uning bola elementi (child) deyiladi.

Asosiy qoida: oxirida ochilgan teg birinchi yopiladi. Elementlarni qutilarga o'xshating: kichik quti katta qutining ichida to'liq turishi kerak, uning devoridan «chiqib» turmasligi kerak.

To'g'ri joylashda strong qutisi p qutisining ichida to'liq turadi. Noto'g'ri joylashda strong qutisi p qutisining chegarasini kesib o'tadi. To'g'ri <p> <strong> <p><strong>…</strong></p> Noto'g'ri <p> <strong> <p><strong>…</p></strong>
Ichki quti tashqi qutidan chiqib turmasligi kerak.
<!-- To'g'ri: strong p ichida ochilib, p ichida yopiladi -->
<p>Bu <strong>juda muhim</strong> gap.</p>

<!-- Noto'g'ri: p strong'dan oldin yopilib qoldi -->
<p>Bu <strong>juda muhim</p> gap.</strong>

Noto'g'ri yozilgan kodni brauzer qanday ko'rsatishini sinab ko'ring:

<p>Bu <strong>juda muhim</p> gap.</strong>
<p>Bu esa keyingi xatboshi.</p>

«gap.» so'zi xatboshidan tashqariga chiqib, alohida qatorga tushib qoldi va u ham qalin bo'lib ketdi. Brauzer xatoni o'zicha «tuzatishga» harakat qildi, natija esa biz kutgandek emas. Endi muharrirdagi birinchi qatorni to'g'rilang: </strong> ni </p> dan oldinga o'tkazing.

Chekinish — o'qish qulay bo'lishi uchun

Element ichida boshqa elementlar ko'p bo'lsa, ichki qatorlarni bir oz o'ngga surib yozamiz. Bu chekinish (inglizcha indentation) deyiladi. Brauzer uchun farqi yo'q, lekin odam uchun kim kimning ichida ekani darhol ko'rinadi:

<!-- Chekinishsiz: o'qish qiyin -->
<body>
<h1>Sarlavha</h1>
<p>Matn <strong>muhim</strong> joyi bilan.</p>
</body>

<!-- Chekinish bilan: tuzilish ko'rinib turibdi -->
<body>
  <h1>Sarlavha</h1>
  <p>Matn <strong>muhim</strong> joyi bilan.</p>
</body>

VS Code'da qatorni o'ngga surish uchun Tab, chapga qaytarish uchun Shift + Tab bosing. Butun faylni bir zumda chiroyli tartibga keltirish uchun — Shift + Alt + F (VS Code bilan ishlash darsida ko'rgan edik).

Atributlar

Ba'zan elementga qo'shimcha ma'lumot berish kerak bo'ladi: unga nom qo'yish, izoh qo'shish, tilini ko'rsatish. Buning uchun atributlar (inglizcha attributes) bor. Atribut doim ochuvchi teg ichida yoziladi:

Atribut ochuvchi teg ichida yoziladi: atribut nomi, tenglik belgisi va qo'shtirnoq ichidagi qiymat. atribut <p title = "Izoh" >Matn</p> nomi qiymati qo'shtirnoq ichida
Atribut = nom + = + qo'shtirnoqdagi qiymat.

Qoidalar:

Ko'p ishlatiladigan atributlar:

AtributNima qiladiMisol
titleSichqoncha element ustida turganda chiqadigan kichik izohtitle="Batafsil"
idElementning yagona nomi. Bir sahifada bir xil id ikki marta bo'lmaydiid="aloqa"
classGuruh nomi: bir nechta elementga bir xil klass berib, ularni CSS bilan birga bezash mumkinclass="muhim"
langMatn tili: uz — o'zbek, en — ingliz, ru — ruslang="en"
hiddenElementni yashiradi. Qiymati yo'q — atributning o'zi yetarlihidden
<h1 id="bosh" title="Bu sahifaning asosiy sarlavhasi">Atributlar</h1>
<p title="Meni topdingiz!">Sichqonchani shu xatboshi ustida biroz ushlab turing.</p>
<p class="muhim">Bu xatboshining klassi bor. Hozircha u hech narsani o'zgartirmaydi.</p>
<p hidden>Bu xatboshi ko'rinmaydi — hidden atributi uni yashirgan.</p>
<p lang="en">This paragraph is in English.</p>

Sichqonchani ikkinchi xatboshi ustida ushlab turing — izoh chiqadi. To'rtinchi xatboshi esa umuman ko'rinmayapti. class va id hozircha ko'zga ko'rinadigan hech narsa qilmayapti: ular CSS va JavaScript uchun «tutqich» vazifasini bajaradi. Qiziqish uchun muharrir oxiriga mana bu qatorni qo'shib ko'ring:

<style> .muhim { color: crimson; } </style>

Klassi muhim bo'lgan xatboshi qizil rangga kirdi. Bu — CSS, uni 8-darsda batafsil o'rganamiz.

Keyingi darslarda yana ko'p atributlar bilan tanishasiz: havola manzili uchun href, rasm fayli uchun src va boshqalar.

HTML sahifaning asosiy tuzilishi

Hozirgacha muharrirlarda faqat sahifaning ko'rinadigan qismini yozdik. Haqiqiy HTML fayl esa doim ma'lum bir «qolip» asosida quriladi. Oldingi darsda VS Code'da ! + Tab bosganingizda aynan shu qolip paydo bo'lgan edi:

<!doctype html>
<html lang="uz">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Mening sahifam</title>
  </head>
  <body>
    <h1>Salom, dunyo!</h1>
    <p>Bu mening birinchi sahifam.</p>
  </body>
</html>

Har bir qatorni ko'rib chiqamiz:

QatorMa'nosi
<!doctype html>«Bu — zamonaviy HTML hujjat» degan e'lon. Bu teg emas, shunchaki brauzerga ko'rsatma. Doim faylning eng birinchi qatorida turadi. VS Code uni katta harflar bilan — <!DOCTYPE html> deb yozadi, farqi yo'q.
<html lang="uz">Butun sahifani o'rab turuvchi ildiz element. lang="uz" — sahifa tili o'zbekcha: ekran o'quvchi dasturlar matnni to'g'ri talaffuz qiladi, brauzer esa keraksiz tarjima taklif qilmaydi.
<head>Sahifaning «bosh» qismi — sahifa haqidagi xizmat ma'lumotlari. Bu yerdagi narsalar sahifaning o'zida ko'rinmaydi.
<meta charset="utf-8">Matn kodlashi — UTF-8. Usiz o'zbekcha harflar va maxsus belgilar «buzilib» chiqishi mumkin.
<meta name="viewport" …>Telefonda sahifa ekran kengligiga moslashib, to'g'ri o'lchamda ko'rinishi uchun.
<title>Sahifa nomi. U brauzer yorlig'ida (tab), xatcho'plarda va Google natijalarida chiqadi.
<body>Sahifaning «tanasi»: ekranda ko'rinadigan hamma narsa — sarlavhalar, matn, rasmlar — shu yerda.

HTML sahifani xatga o'xshatish mumkin. <head> — konvert: unda xat kimga, qaysi tilda va qanday nom bilan ketayotgani yozilgan. <body> — konvert ichidagi xatning o'zi, o'quvchi aynan shuni o'qiydi.

VS Code'ning ! + Tab qolipida lang="en" (ingliz tili) va <title>Document</title> turadi. Ularni darhol lang="uz" va sahifangizning haqiqiy nomiga almashtiring.

Elementlar bir-birining ichida turgani uchun sahifa «oila daraxti»ga o'xshaydi. <html> — hammaning bobosi, <head> va <body> — uning bolalari:

html
├── head
│   ├── meta
│   ├── meta
│   └── title
└── body
    ├── h1
    └── p

Bu daraxt DOM deb ataladi — JavaScript bilan sahifani o'zgartirganda (16-dars) aynan shu daraxt bilan ishlaymiz.

Qisqalik uchun darslardagi muharrirlarda faqat <body> ichidagi qismni yozamiz — qolganini muharrir o'zi qo'shadi. Lekin VS Code'dagi haqiqiy faylda to'liq tuzilish doim bo'lishi kerak.

Izohlar

Izoh (inglizcha comment) — kod ichidagi, brauzer ko'rsatmaydigan matn. U <!-- bilan boshlanib, --> bilan tugaydi. Izohlar o'zingizga yoki boshqa dasturchiga eslatma qoldirish va kodning bir qismini vaqtincha «o'chirib» turish uchun kerak.

<!-- Bu izoh. U sahifada ko'rinmaydi. -->
<h1>Mening sahifam</h1>

<!-- Pastdagi xatboshini vaqtincha yashirib qo'ydim:
<p>Bu xatboshi hozircha kerak emas.</p>
-->

<p>Bu xatboshi esa ko'rinadi.</p>

VS Code'da qatorni izohga aylantirish uchun Ctrl + / bosing (macOS'da Cmd + /). Yana bir marta bossangiz, izoh olib tashlanadi.

Izohlar sahifada ko'rinmaydi, lekin Ctrl + U bilan har qanday odam ularni o'qiy oladi. Izohlarga parol yoki maxfiy ma'lumot yozmang.

Bo'sh joylar va yangi qatorlar

HTML'ning bitta qiziq xususiyati bor: brauzer ketma-ket kelgan bir nechta bo'sh joy, Tab va yangi qatorlarni bitta bo'sh joyga aylantiradi. Sinab ko'ring:

<p>Bu      gapda       juda     ko'p      bo'sh    joy    bor.</p>

<p>Bu
      gap
   bir necha
             qatorga
   yozilgan.</p>

Ikkala xatboshi ham oddiy bitta qator bo'lib chiqdi. Aynan shu xususiyat tufayli kodni bemalol chekinish va bo'sh qatorlar bilan chiroyli yozishimiz mumkin — natijaga ta'sir qilmaydi.

HTML «kechirimli», lekin…

Yuqorida ko'rdingiz: HTML'da xato qilsangiz ham, brauzer xato haqida xabar bermaydi va sahifani baribir ko'rsatishga harakat qiladi. Yopuvchi tegni unutsangiz, ko'pincha hech narsa sezilmaydi. Lekin bunga tayanmang:

Shuning uchun boshidanoq to'g'ri yozishga odatlaning: har bir ochilgan tegni yoping, ichma-ich joylashni kuzating. Kodingizni validator.w3.org saytida bepul tekshirish ham mumkin — u xatolarni qator raqami bilan ko'rsatadi.

Brauzerda F12 bosib, Elements bo'limini oching (1-darsda ko'rgan edik). U yerda brauzer sizning kodingizni qanday «tushunganini» — yuqoridagi daraxtni ko'rasiz. Kichik uchburchaklarni bosib, elementlarni ochib-yopish mumkin. Xatoli kodda brauzer qayerni o'zicha tuzatganini ham shu yerda ko'rish mumkin.

Mashqlar

1-mashq «Men haqimda» sahifasi

Izohlardagi ko'rsatmalar bo'yicha kichik sahifa yozing: ismingiz bilan bitta <h1> sarlavha, o'zingiz haqingizda xatboshi, ajratuvchi chiziq <hr> va yana bitta xatboshi. Izohlarni o'chirmasangiz ham bo'ladi — ular sahifada ko'rinmaydi.

<!-- 1. Ismingiz bilan h1 sarlavha yozing -->

<!-- 2. O'zingiz haqingizda bitta xatboshi (p) -->

<!-- 3. Ajratuvchi chiziq (hr) -->

<!-- 4. Qiziqishlaringiz haqida yana bitta xatboshi -->

Ishora

Sarlavha: <h1>Ismingiz</h1>. Xatboshi: <p>…</p>. Chiziq bo'sh element, yopuvchi tegi yo'q: <hr>.

Yechimni ko'rish
<h1>Aziza Karimova</h1>
<p>Men Samarqanddanman, 17 yoshdaman va veb-dasturlashni o'rganyapman.</p>
<hr>
<p>Bo'sh vaqtimda kitob o'qiyman va shaxmat o'ynayman.</p>

2-mashq Teglarni to'g'ri joylang

Quyidagi kodda teglar noto'g'ri tartibda yopilgan — natijada «dars bo'ldi.» va «boshlanadi.» so'zlari o'z xatboshisidan tashqariga chiqib ketgan. Teglarni shunday to'g'rilangki, har bir <strong> va <em> o'z xatboshisining ichida ochilib, ichida yopilsin. So'zlarni o'chirmang.

<h1>Mening kundaligim</h1>
<p>Bugun <strong>juda qiziqarli</p> dars</strong> bo'ldi.
<p>Ertaga <em>yangi mavzu</p></em> boshlanadi.
Ishora

Qoida: oxirida ochilgan teg birinchi yopiladi. <p> ichida <strong> ochilgan bo'lsa, avval </strong>, keyin </p> keladi. Yopuvchi </p> xatboshining eng oxirida, nuqtadan keyin turadi.

Yechimni ko'rish
<h1>Mening kundaligim</h1>
<p>Bugun <strong>juda qiziqarli</strong> dars bo'ldi.</p>
<p>Ertaga <em>yangi mavzu</em> boshlanadi.</p>

3-mashq To'liq sahifa qolipi

Endi to'liq HTML sahifani o'zingiz, yoddan yozing: <!doctype html>, lang="uz" atributli <html>, ichida <meta charset>, <meta name="viewport"> va bo'sh bo'lmagan <title> bo'lgan <head>, hamda bitta <h1> va <p> bo'lgan <body>. Avval yuqoridagi namunaga qaramasdan urinib ko'ring!

<!-- To'liq sahifa tuzilishini shu yerga yozing -->

Ishora

Tartib: doctype → html → (head → meta, meta, title) → (body → h1, p). Har bir ochilgan teg yopilishi kerak (meta bundan mustasno — u bo'sh element).

Yechimni ko'rish
<!doctype html>
<html lang="uz">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Mening sahifam</title>
  </head>
  <body>
    <h1>Xush kelibsiz!</h1>
    <p>Bu sahifani o'zim, yoddan yozdim.</p>
  </body>
</html>

Muharrir natijasida <title> ko'rinmaydi — u faqat brauzer yorlig'ida chiqadi. Buni VS Code'da sinab ko'ring.

Amaliy topshiriq VS Code'da va DevTools'da

  1. Oldingi darsda yaratgan veb-sayt papkangizda men-haqimda.html faylini oching (VS Code'da New File).
  2. ! + Tab bilan qolipni chiqaring, lang="uz" va <title> ni o'zgartiring.
  3. <body> ichiga 1-mashqdagi kodingizni joylang va faylni saqlang (Ctrl + S).
  4. Sahifani brauzerda oching (yoki Live Server bilan). Brauzer yorlig'ida sarlavhangiz chiqdimi?
  5. F12 → Elements: html, head va body ni ochib, daraxtni ko'rib chiqing.

O'zingizni sinang

HTML qisqartmasi nimani anglatadi?

  1. High Technology Modern Language
  2. Home Tool Markup Language
  3. HyperText Markup Language
  4. HyperText Machine Logic

To'g'ri. HyperText Markup Language — gipermatnni belgilash tili.

Qaysi biri p elementining yopuvchi tegi?

  1. <p>
  2. </p>
  3. <\p>
  4. <p/>

To'g'ri. Yopuvchi teg nomdan oldin oddiy qiya chiziq / bilan yoziladi.

Qaysi kodda teglar to'g'ri joylashtirilgan?

  1. <p><em>Salom</p></em>
  2. <em><p>Salom</em></p>
  3. <p><em>Salom</p>
  4. <p><em>Salom</em></p>

To'g'ri. Oxirida ochilgan em birinchi yopildi, keyin p.

Sahifada ko'rinadigan sarlavhalar, matn va rasmlar qaysi element ichida yoziladi?

  1. <body>
  2. <head>
  3. <title>
  4. <meta>

To'g'ri. <head> da sahifa haqidagi xizmat ma'lumotlari turadi, ko'rinadigan hamma narsa esa <body> da.

<p>Salom      dunyo</p> (so'zlar orasida 6 ta bo'sh joy) brauzerda qanday ko'rinadi?

  1. So'zlar orasida 6 ta bo'sh joy bilan
  2. Ikki so'z ikki alohida qatorda
  3. So'zlar orasida bitta bo'sh joy bilan
  4. Xato chiqadi

To'g'ri. Brauzer ketma-ket kelgan bo'sh joylarni bittaga aylantiradi.

Xulosa

  • HTML — mazmunni belgilash tili; u dasturlash tili emas.
  • Element = ochuvchi teg + mazmun + yopuvchi teg: <p>Salom</p>. Bo'sh elementlarning (<br>, <hr>, <img>) yopuvchi tegi yo'q.
  • Sarlavhalar h1–h6 ma'no bo'yicha tanlanadi; sahifada bitta h1.
  • Ichma-ich joylashda oxirida ochilgan teg birinchi yopiladi; chekinish kodni o'qishni osonlashtiradi.
  • Atributlar ochuvchi tegda yoziladi: nom="qiymat".
  • Har bir sahifa: <!doctype html> → <html lang="uz"> → <head> (meta, title) + <body> (ko'rinadigan qism).
  • Izohlar <!-- … --> ko'rinmaydi; ketma-ket bo'sh joylar bitta bo'sh joyga aylanadi.