HTML — Web Hypertext Application Technology Working Group (WHATWG, ya’ni veb-gipermatn texnologiyalari ishchi guruhi) tomonidan yaratilgan standartdir. Bu guruh eng mashhur brauzer ustida ishlovchilardan tuzilgan. Oddiy qilib aytganda bu guruh Google, Mozilla, Apple va Microsoft tomonidan boshqariladi.
Dastlab HTML ga World Wide Web Consortium (W3C) tashkiloti mas’ul edi. Lekin ularning XHTML ga ko‘p urg‘u berishlari xato qarorligi ayon bo‘lgandan keyin, HTML nazorati WHATWG ga o‘tib ketdi.
XHTML haqida oldin eshitmaganlar uchun kichik hikoya. 2000-yillar boshida, barchamiz Web ning kelachagi XML bilan bog‘liq deb o‘ylardik. Shuning uchun HTML SGML ga asoslangan mualliflik tilidan XML standartiga o‘ta boshladi. Bu juda katta o‘zgarish edi. Biz endi ko‘proq qoidalarni bilishimiz, o‘rganishimiz kerak edi. Qoidalar esa qat’iyroq bo‘ldi. Lekin brauzer ishlab chiqaruvchilari bu yo‘l Web uchun noto‘g‘ri ekanligini anglashdi, va barini ortga qaytarishdi. Natijada biz hozir bilgan HTML5 paydo bo‘ldi.
W3C osonlikcha HTML nazoratini berib qo‘ymadi. Bir necha yil davomida 2 ta standart o‘rtasida raqobat ketdi, ikkisini ham maqsadi rasmiy standtartga aylanish edi. Nihoyat 2019-yil 28-mayga kelibgina W3C rasman mag‘lubiyatini tan oldi va WHATWG tomonidan yaratilgan HTML versiyani to‘g‘ri deb qabul qildi.
Yuqorida HTML5 deb aytib o‘tdim, keling endi HTML versiyalar tarixini ko‘rib chiqsak. Bilaman, bu biroz chalg‘ituvchi hikoya. Aslida hayotda juda ko‘p narsalar shunday, undan ko‘plab aktorlar ishtirok etadi. Lekin shu sababli ham u qiziq =)
HTML 1-versiyasi 1993-yilda e’lon qilindi. Havolada rasmiy RFC ni ko‘rishingiz mumkin.
1995-yil HTML 2, 1997-yil yanvar oyida HTML 3, o‘sha yil dekabr oyida esa HTML 4 ga ega bo‘ldik.
XHTML dan HTML5 o‘tishimiz uchun umumiy 20 yildan ortiqroq vaqt ketdi. HTML5 endi oddiy HTML emas. U barcha zamonaviy texnologiyalari to‘plamini o‘zida jamlangan. Misol qilib juda ko‘plab API va standartlarni sanashimiz mukin: WebGL, SVG…
Bu yerda tushunishingiz kerak bo‘lgan asosiy narsa shuki, HTML ni versiyasi yo‘q. Bu doimiy bor standart, xuddi CSS kabi. Biz uni 3-versiyasi deb atasakda, aslida bu alohida va mustaqil ishlab chiqilgan modullar jamlanmasi. JavaScriptda ham, har yili yangi versiya chiqsada, aslida ahamiyatga ega joyi faqat yangi mustaqil xususiyatlari xolos.
To‘g‘ri biz uni HTML5 deb ataymiz. 1997-yildan boshlab esa HTML4 deganmiz. Bu juda katta muddat, u xoh web bo‘lsin.
Bu yerda shu standart bilan to‘liq tanishishiz mumkin:
https://html.spec.whatwg.org/multipage.
HTML markerlash tili bo‘lib, web olami tuzilmasini yaratishda foydalaniladi.
HTML brauzerga turli yo‘llar bilan uzatiladi:
- Yuborilgan so‘rov yoki sessiyadagi ma’lumotlarga bog‘liq ravishda server ilovasi orqali generatsiya qilinishi mumkin. Bunday server ilovalariga Rails, Laravel, Djangolar misol bo‘la oladi.
- JavaScript orqali klient tomonning o‘zida generatsiya qilinishi mumkin.
- Eng oddiy usul, shunchaki faylga saqlanib server orqali brauzerga uzatiladi.
Keling oxirgi holatni kengroq ko‘rib chiqamiz. Amaliyotda bu eng kam tarqalga usul bo‘lsada, bloklar yasalish asosini tushunib olish uchun muhim.
Konsepsiyaga ko‘ra HTML fayli .html yoki .htm kengaytmasiga ega bo‘ladi. Fayl teglardan iborat. Teglar esa kontentni o‘rab turadi va har bir teg o‘zi o‘rab turgan matnga qandaydir ma’no yuklaydi.
Keling buni misolda ko‘ramiz. Quyudagi HTML kodda p teg paragraf yaratadi:
|
|
Quyida esa, ul tegi tartiblanmagan ro‘yxatni va li tegi ro‘yxat elementlarini yaratadi:
|
|
HTML brauzerga kelgan payti, teglar interpretatsiyadan o‘tadi va brauzer har bir elementni vizual qoidalarga ko‘ra ifodalab beradi. Ba’zi qoidalar standrat holatda berilgan bo‘ladi, masalan, ro‘yxat qanday ifodalanishi yoki havola tagiga ko‘k rangda chizilishi. Boshqa qoidalar esa CSS orqali belgilanadi.
HTML taqdimot uchun emas. U elemetnlarni qanday ko‘rinishini emas, balki nima ekanligini ifodalash uchun foydalaniladi. Uning qanday ko‘rinishda chiqishiga brauzer mas’uldir. U bu ishni CSS ga qarab bajaradi.
HTML sahifa strukturasi
Keling birgalikda HTML sahifa yaratib ko‘ramiz.
Avval hujjat turini e’lon qilish bilan boshlanadi, bu bilan biz brauzerga bu HTML sahifa ekanligini va uning qaysi versiyasidan foydalanayotganligimizni ta’kidlaymiz.
Zamonaviy HTML quyidagi doctype dan foydalanadi
|
|
Keyin esa ochuvchi va yopuvchi tegga ega bo‘lgan html
elementi keladi.
|
|
Ko‘plab teglar juft holatda: ochuvchi va yopuvchi tegi bilan keladi. Yopuvchi teg hamrohidan faqat /
belgi orqali farq qiladi.
|
|
Ba’zi oz sonli teglar yopuvchi tegga ega emas. Chunki o‘zida hech qanday kontentni olib yurmaydi.
Ochuvchi html
tegi sahifa hujjati turini e’lon qilgandan keyin keluvchi dastlabki teg bo‘lishi kerak. Uning yopuvchi tegi esa HTML hujjatdagi eng oxirgi teg bo‘lishi kerak.
html
elementi ichida ikkita element keladi. Bular head
va body
elementlari.
|
|
head
ni ichida biz web sahifa yaratish uchun kerak bo‘ladigan eng muhim ma’lumotlarni beramiz. Masalan, sarlavha, meta ma’lumot, va ichki yoki tashqi CSS, JavaScript. Aniqroq qililb aytganda sahifada ko‘rinish bermaydi-yu lekin brauzerga sahifani to‘g‘ri ko‘rsatishi uchun yordam beradigan narsalar (botlar ham bo‘lishi mumkin, masalan Google qidiruv boti) keladi.
body
ichida esa sahifa kontenti keladi, ya’ni ko‘rinuvchi narsalar.
Teg va element
Men ba’zi o‘rinda teg, ba’zi o‘rinda element so‘zini qo‘llayapman. Bularning farqi nimada?
Element ochuvchi va yopuvchi tegga ega bo‘ladi. Quyidagi misolda biz p
elementini yaratish uchun ochuvchi va yopuvchi tegdan foydalanamiz:
|
|
Demak, elementning tarkibi quyidagi ko‘rinishda bo‘ladi:
- ochuvchi teg
- matnli kontent
- yopuvchi teg
Agar element yopuvchi tegga ega bo‘lmasa, u faqat ochuvchi teg orqali yoziladi va hech qanday matnli kontentga ega bo‘lmaydi.
Xulosa qilib aytganda, men element va teg so‘zlari orqali bir xil narsani ifodalayotgan bo‘laman, ochuvchi teg va yopuvchi teg birikmalari bundan mustasno.
Atributlar
Ochuvchi tegga biz atribut deb ataluvchi ma’lumotni biriktirishimiz mumkin.
Attribut sintaksisi kalit=”qiymat”
ko‘rinishiga ega:
|
|
Siz shuningdek biitalik tirnoq — ‘’
ishlatsangiz ham bo‘ladi, lekin HTML da qo‘shtirnoqdan foydalangan ma’qul va bu shartli ravishda qabul qilingan.
Atributlar bir nechta bo‘lishi ham mumkin:
|
|
Ba’zi atributlar mantiqiydir, ya’ni kalit qiymatini kiritishni o‘zi yetarli:
|
|
Eng ko‘p foydalaniladigan atributlar class
va id
atributlaridir. Ularning maxsus vazifasi bor, shuningdek CSS va JavaScriptda sezilarli foyda beradi. Ularning o‘zaro farqi shundaki id
unikal, butun sahifada takrorlanmas bo‘ladi. class
esa aksincha bir necha marta turli elementlarda takrorlanishi mumkin. Yana bir farqi, id
faqat bitta qiymatga teng bo‘ladi, class
esa o‘zaro ajratilgan holda bir necha qiymatlarga teng bo‘lishi mumkin:
|
|
Class ning qiymatlarida so‘zlarni odatda chiziqcha -
bilan ajratiladi, shartli ravishda shunday qabul qilingan.
Bular hozircha bilishingiz kerak bo‘lgan ikkita asosiy atributlardir. Ba’zi shunday atributlar borki, ular faqat biron-bir maxsus tegdagina qo‘llaniladi. Boshqa atributlar esa umumiyroq holda foydalaniladi. Hozir ko‘rganimiz class va id ham shunday toifaga mansub, shuningdek style atributi elementga ichki CSS qoidalarini qo‘shish uchun ishlatiladi.
Registr sezuvchanligi
HTML registr sezuvchan emas, ya’ni teglarni bosh harflarda ham kichik harflarda yozsa bo‘ladi. Avvalari bosh harflar yozish odatiy edi, lekin hozir kichik harflar bilan yozish urf. Bu ham shartli, albatta.
Odatda bunday yozamiz:
|
|
Bunday emas:
|
|
Bo‘sh satr
Juda muhim qismi: HTML da bo‘sh satrlar ahamiyatga ega emas. Bo‘sh satr qiymatdan olib tashlanadi.
Brauzer uchun
|
|
ham,
|
|
ham,
|
|
ham bir xil ma’noga ega.
Men sizga yaxshi tartiblangan, o‘qish uchun oson bo‘lgan sintaksisdan foydalanishni maslahat beraman.
Men odatda bunday ko‘rinishni afzal ko‘raman:
|
|
Yoki
|
|
Ichma-ich teglar 2 yoki 4 ta belgi orqali bir-biridan ajratiladi.
|
|
Eslatma 1: “HTML da bo‘sh satrlar ahamiyatga ega emas” jumlasi shuni anglatadiki, agar siz qo‘shimcha bo‘sh satr qo‘shmoqchi bo‘lsangiz, oddiy satr bilan qila olmaysiz va bu sizni asabingizni o‘ynashi mumkin. Shunday holatda CSS dan foydalanishni maslahat beraman.