03 β Havolalar va media¶
β¬ οΈ Oldingi: 02 β Matn elementlari Β· π README Β· Keyingi: 04 β Jadvallar β‘οΈ
Bu bobda: havolalar (
a) yordamida sahifalarni bog'lashni, rasmlarni (img) to'g'ri va tez ko'rsatishni, responsive (moslashuvchan) rasm texnikalarini, hamda audio, video,figurevaiframeelementlarini noldan ekspert darajagacha o'rganamiz.
Oldingi boblarda biz HTML'ning matn elementlarini ko'rdik. Lekin internetni "internet" qiladigan narsa β bu havolalar. Aynan havolalar tufayli bir sahifadan ikkinchisiga o'tamiz, butun dunyo saytlari bir-biriga ulanadi. So'ngra esa sahifalarni jonlantiruvchi media keladi: rasmlar, ovoz, video.
Bu bobda biz ikki katta mavzuni yopamiz:
- Havolalar β
<a>elementi va uning barcha imkoniyatlari (href,target,download, xavfsizlik). - Media β
<img>rasmlari, responsive rasmlar,<figure>,<audio>,<video>va<iframe>.
Oddiydan boshlab, asta-sekin ekspert nozikliklariga yetamiz. Har bir narsada "nega aynan shunday?" degan savolga javob beramiz β chunki sababini bilsang, qoidani yodlash shart emas, o'zing chiqarib olasan.
3.1 Havola nima va nega kerak?¶
Tasavvur qiling, har bir veb-sahifa β bu kitobdagi alohida varaq. Havola (link) β bu bir varaqdan ikkinchisiga olib boruvchi "eshik". Foydalanuvchi ko'k, ostiga chizilgan matnni bosadi va boshqa sahifaga o'tadi.
HTML'da havola anchor (langar) elementi β <a> bilan yaratiladi:
Bu kod brauzerda "Bizning sayt" degan bosiladigan matn ko'rsatadi. Bosilganda foydalanuvchi https://uzbekistan.uz manziliga o'tadi.
Bu yerda eng muhim qism β href atributi (HTML "hypertext reference" β gipermatn havolasi degani). U qayerga o'tishni belgilaydi. Ochilish tegi (<a ...>) bilan yopilish tegi (</a>) orasidagi matn esa foydalanuvchi ko'radigan va bosadigan qism.
π‘
<a>β bu inline (qatoriy) element. Ya'ni u matn ichida, gap o'rtasida ham tura oladi:
β οΈ Eng ko'p uchraydigan boshlang'ich xato: href ni unutib qo'yish. <a>Matn</a> deb yozsangiz, matn ko'rinadi-yu, lekin u bosilmaydigan bo'lib qoladi β chunki "qayerga" o'tishni bermadingiz.
3.2 href qiymatlari: yo'l turlari¶
href ga turli xil qiymatlar bera olamiz. Eng muhim turlarini ko'rib chiqamiz. Bularni tushunish β bobning eng asosiy poydevori, shuning uchun shoshilmang.
Absolyut yo'l (to'liq URL)¶
Absolyut yo'l β bu to'liq manzil, https:// (yoki http://) va domen nomi bilan birga. Bu xuddi xatdagi to'liq pochta manzili kabi: "Toshkent shahri, Amir Temur ko'chasi, 1-uy" β bu manzilni dunyoning istalgan joyidan yozsangiz ham topiladi.
<a href="https://developer.mozilla.org">MDN hujjatlari</a>
<a href="https://www.google.com/search?q=html">Google'da qidirish</a>
Nega kerak? Absolyut yo'l boshqa saytga (tashqi manzilga) havola berishning yagona to'g'ri yo'li. Boshqa saytda qaysi papkada turishingizni bilmaysiz, shuning uchun to'liq manzil yozasiz.
Nisbiy yo'l (joriy joydan)¶
Nisbiy yo'l β bu hozir turgan faylga nisbatan manzil. Domen yozilmaydi. Bu xuddi "qo'shni xona" yoki "tepadagi qavat" deyishga o'xshaydi β faqat hozir qayerda turganingizni bilsa, joyni topib olasiz.
Aytaylik, hozir index.html faylidamiz va u bilan bir papkada about.html bor:
Endi yo'lning "navigatsiya" belgilarini ko'ramiz β bular eng chalkashtiradigan, ammo eng muhim qism:
| Belgi | Ma'nosi | Misol |
|---|---|---|
fayl.html |
Shu papkadagi fayl | about.html |
papka/fayl.html |
Ichkariga β papka ichiga kirish | blog/post-1.html |
./ |
"Aynan shu papka" (ko'pincha tushiriladi) | ./about.html = about.html |
../ |
Bir papka tashqariga (ota-papkaga) chiqish | ../index.html |
../../ |
Ikki papka tashqariga | ../../uy.html |
/ bilan boshlanishi |
Sayt ildizidan (domen tubidan) | /rasmlar/logo.png |
Misollar bilan tushunamiz. Faraz qiling, fayl manzillari shunday:
Agar siz /blog/post-1.html ichida bo'lsangiz:
<!-- Shu papkadagi rasmlar/ ichiga kirish (ichkariga) -->
<a href="rasmlar/sarlavha.jpg">Sarlavha rasmi</a>
<!-- Bir papka tashqariga chiqib, index.html ga -->
<a href="../index.html">Bosh sahifa</a>
<!-- Sayt ildizidan boshlanadi (qaysi faylda bo'lsangiz ham ishlaydi) -->
<a href="/about.html">Biz haqimizda</a>
π‘
./va../ni qanday eslab qolish kerak? Bitta nuqta.= "shu yer" (joriy papka). Ikkita nuqta..= "bir qadam orqaga" (ota-papka). Telefon kontaktlaridagi "orqaga" tugmasiga o'xshaydi: har bir../sizni bir daraja yuqoriga ko'taradi.
β οΈ Tez-tez uchraydigan xato: havola ishlamasa, ko'pincha sabab β yo'lning noto'g'riligi. ../ ni ortiqcha yoki kam yozib qo'yish eng keng tarqalgan muammo. Brauzerning manzil qatoriga qarang: u qaysi faylni izlayotganini ko'rsatadi.
π Absolyut yo'l (
/dan boshlanuvchi) qachon kerak? Katta saytlarda fayllar turli chuqurlikdagi papkalarda turadi./rasmlar/logo.pngdeb yozsangiz, bu har qaysi faylda bir xil ishlaydi β chunki u har doim ildizdan hisoblaydi. Nisbiy../../rasmlar/logo.pngesa fayl joyiga bog'liq bo'lib, ko'chirilganda buziladi.
Fragment havolasi (#) β bitta sahifa ichida sakrash¶
# bilan boshlanuvchi havola boshqa sahifaga o'tmaydi β u shu sahifaning ma'lum bir joyiga "sakraydi". Bu uzun sahifalarda juda foydali (masalan, "Yuqoriga qaytish" tugmasi yoki mundarija).
Bu ikki qismdan iborat: maqsad (id bilan belgilangan joy) va havola (# bilan unga ishora qiluvchi):
<!-- Havola: bosilganda #aloqa joyiga sakraydi -->
<a href="#aloqa">Aloqa bo'limiga o'tish</a>
<!-- ... uzun matn ... -->
<!-- Maqsad: id="aloqa" bo'lgan element -->
<section id="aloqa">
<h2>Biz bilan bog'laning</h2>
</section>
Nega ishlaydi? Brauzer #aloqa ni ko'rib, sahifada id="aloqa" bo'lgan elementni qidiradi va o'sha joyga aylantirib (scroll qilib) boradi. Sahifa qayta yuklanmaydi β shuning uchun juda tez.
π‘ Fragmentni absolyut yoki nisbiy yo'l bilan ham birlashtirsa bo'ladi:
href="about.html#jamoa"βabout.htmlsahifasini ochib, darholid="jamoa"joyiga sakraydi.
Maxsus protokollar: mailto: va tel:¶
Havola faqat sahifalarga emas, harakatlarga ham olib borishi mumkin:
<!-- Bosilganda foydalanuvchining email dasturini ochadi -->
<a href="mailto:info@example.com">Bizga yozing</a>
<!-- Telefon (asosan mobil qurilmalarda) β bosilsa qo'ng'iroq oynasi ochiladi -->
<a href="tel:+998901234567">+998 90 123 45 67</a>
mailto: ga qo'shimcha ma'lumotlar ham berish mumkin (mavzu, matn):
π
tel:raqamida bo'sh joy yoki qavs ishlatmang, faqat+va raqamlar:tel:+998901234567. Lekin ko'rinadigan matnda chiroyli formatlasangiz bo'ladi.
3.3 target va xavfsizlik: yangi tabda ochish¶
Odatda havola bosilganda yangi sahifa xuddi shu tabda ochiladi (eski sahifa o'rnini egallaydi). Agar yangi tabda ochilishini istasangiz, target="_blank" ishlatasiz:
Nega kerak? Ko'pincha tashqi saytlarga havola berganda yangi tabda ochasiz β shunda foydalanuvchi sizning saytingizni yo'qotmaydi. Lekin shu yerda muhim xavfsizlik masalasi bor.
rel="noopener" β nega bu muhim?¶
target="_blank" bilan ochilgan yangi tab, eski versiyalarda, JavaScript orqali sizning sahifangizni boshqarib olishi mumkin edi (window.opener deb ataluvchi bog'lanish orqali). Yomon niyatli sayt sizning tabingizni soxta "parolni kiriting" sahifasiga yo'naltirib, foydalanuvchini aldab qo'yishi mumkin edi. Bu hujum tabnabbing deb ataladi.
Yechim β rel="noopener" atributi. U yangi tabning eski tabga bo'lgan bog'lanishini uzadi (window.opener = null qiladi):
noopenerβ yangi tab sizning sahifangizni boshqara olmasligini ta'minlaydi (asosiy himoya).noreferrerβ qo'shimcha: yangi saytga "qaysi sahifadan keldingiz" ma'lumotini ham yubormaydi.
π Yaxshi yangilik: zamonaviy brauzerlar
target="_blank"ishlatilgandanoopenerni avtomatik qo'shadi. Lekin baribir uni o'zingiz yozish β yaxshi odat (eski brauzerlar va aniqlik uchun). Ko'pchilik kod tekshiruvchi vositalar uni talab qiladi.
β οΈ Har bir havolaga target="_blank" qo'yaverish β yomon amaliyot. Foydalanuvchining "orqaga" tugmasi ishlamay qoladi va o'nlab tablar ochilib ketadi. Faqat kerakli joylarda (asosan tashqi saytlar yoki PDF/hujjat) ishlating.
3.4 Boshqa foydali atributlar: download va title¶
download β faylni yuklab olish¶
Odatda brauzer ochib ko'ra oladigan fayllarni (rasm, PDF) ochadi. Agar uni darhol yuklab olishga majburlamoqchi bo'lsangiz, download atributini qo'ying:
<!-- Bosilganda fayl ochilmaydi, balki yuklab olinadi -->
<a href="hujjat.pdf" download>Hujjatni yuklab olish</a>
<!-- Yuklanayotgan faylga boshqa nom berish -->
<a href="report-2026-final-v3.pdf" download="hisobot.pdf">Hisobotni olish</a>
π
downloadfaqat sizning saytingizdagi (yoki ruxsat berilgan) fayllar uchun ishlaydi β xavfsizlik sababli boshqa domendagi fayllarga ta'sir qilmasligi mumkin.
title β qo'shimcha ma'lumot (tooltip)¶
title atributi sichqoncha havola ustida turganda paydo bo'ladigan kichik izoh (tooltip) beradi:
β οΈ title ga ortiqcha tayanmang. U mobil qurilmalarda umuman ko'rinmaydi va ekran o'qiydigan dasturlar (screen reader) uni ishonchli o'qimaydi. Muhim ma'lumotni faqat title ga yashirib qo'ymang β uni ko'rinadigan matnga ham yozing.
3.5 Rasmlar: <img> elementi¶
Endi mediaga o'tamiz. Sahifaga rasm qo'yish uchun <img> elementi ishlatiladi. U ikki muhim narsa bilan ajralib turadi:
- Bo'sh element (void) β yopilish tegi yo'q. Faqat
<img ...>. - Replaced element β uning "ichida" hech narsa yozilmaydi; brauzer o'rniga rasmni "joylashtiradi".
Bu yerda ikki majburiy atribut bor: src va alt. Ularni alohida ko'rib chiqamiz.
src β rasm manzili¶
src (source β manba) β bu rasm faylining yo'li. U havoladagi href kabi ishlaydi: absolyut yoki nisbiy bo'lishi mumkin.
<img src="rasmlar/logo.png" alt="Kompaniya logotipi"> <!-- nisbiy -->
<img src="https://example.com/banner.jpg" alt="Reklama"> <!-- absolyut -->
alt β muqobil matn (eng muhim atribut!)¶
alt (alternative text β muqobil matn) β bu rasmni so'z bilan tasvirlash. Agar rasm yuklanmasa yoki foydalanuvchi ko'ra olmasa, shu matn ishlatiladi.
Nega alt shunchalik muhim? Uch sabab bor:
-
Accessibility (qulaylik): ko'zi ojiz foydalanuvchilar ekran o'qiydigan dastur (screen reader) ishlatadi. Bu dastur rasmni "ko'rolmaydi" β u faqat
altmatnini ovoz chiqarib o'qiydi.altbo'lmasa, foydalanuvchi rasmda nima borligini umuman bilolmaydi. -
Rasm yuklanmaganda: internet sekin bo'lsa yoki fayl topilmasa, brauzer rasm o'rniga
altmatnini ko'rsatadi β foydalanuvchi nima bo'lishi kerakligini tushunadi. -
SEO (qidiruv tizimlari): Google rasmni "ko'rmaydi", lekin
altmatnini o'qiydi. Yaxshialtβ rasm qidiruvda topilishiga yordam beradi.
<!-- β Yaxshi: aniq, mazmunli -->
<img src="tort.jpg" alt="Uch qavatli shokoladli tug'ilgan kun torti">
<!-- β Yomon: ma'nosiz -->
<img src="tort.jpg" alt="rasm">
<img src="tort.jpg" alt="IMG_2024.jpg">
π‘
altqanday yoziladi? Rasmni telefonda ko'ra olmagan do'stingizga tasvirlab beryapsiz deb tasavvur qiling. "Rasm" yoki "foto" deb yozish foydasiz β rasmda nima borligini ayting.π Bezak (dekorativ) rasmlar uchun bo'sh
alt. Agar rasm faqat bezak bo'lsa va hech qanday ma'no tashimasa (masalan, ajratuvchi chiziq),alt=""(bo'sh) yozing. Bunda screen reader uni butunlay e'tiborsiz qoldiradi. β οΈ Lekinaltni butunlay tashlab ketmang β bo'shalt=""bilanaltyo'qligi har xil narsa. Yo'qligida screen reader fayl nomini o'qib, foydalanuvchini chalkashtiradi.
width va height β nega ularni yozish kerak?¶
width (kenglik) va height (balandlik) atributlari rasmning o'lchamini piksellarda beradi:
Ko'pchilik buni "ortiqcha" deb o'ylaydi, chunki o'lchamni CSS bilan ham berish mumkin. Lekin nega baribir HTML'da yozish kerak?
Sabab β layout shift (sahifaning sakrashi) muammosi. Tasavvur qiling: matn yuklandi, lekin rasm hali kelmadi. Brauzer rasm qanchalik joy egallashini bilmaydi, shuning uchun unga joy ajratmaydi. Rasm yuklanganda esa "birdan" paydo bo'lib, pastdagi matnni surib yuboradi β foydalanuvchi o'qiyotgan joyi sakrab ketadi. Bu juda bezovta qiladi (va Google ham buni "yomon tajriba" deb baholaydi).
Agar width va height ni oldindan bersangiz, brauzer rasmga kerakli joyni oldindan ajratadi β rasm kelguncha joy bo'sh turadi, kelganda esa hech narsa sakramaydi.
<!-- Brauzer 16:9 nisbatni hisoblab, joyni oldindan band qiladi -->
<img src="banner.jpg" alt="Yozgi chegirma reklamasi" width="1600" height="900">
π‘ Muhim nozik nuqta:
Bunda HTML'dagi raqamlar nisbatni (aspect ratio) belgilaydi, CSS esa real ko'rinadigan o'lchamni boshqaradi. Eng zo'r kombinatsiya.widthvaheightni yozsangiz ham, CSS bilan rasmni moslashuvchan qila olasiz. Ushbu CSS responsive saytlarda deyarli har doim ishlatiladi:
loading="lazy" β kerak bo'lganda yuklash¶
Uzun sahifada o'nlab rasm bo'lsa, ularning hammasini birdan yuklash sahifani sekinlashtiradi. loading="lazy" brauzerga "bu rasmni faqat foydalanuvchi unga yaqinlashganda yukla" deb aytadi:
Nega kerak? Foydalanuvchi sahifaning pastiga umuman tushmasligi mumkin. Unda pastdagi rasmlarni yuklash β bekorga sarflangan trafik va vaqt. lazy bilan faqat ko'rinadigan (yoki yaqinlashayotgan) rasmlar yuklanadi.
β οΈ Diqqat: sahifaning eng tepasidagi (birinchi ko'rinadigan) muhim rasmga
loading="lazy"qo'ymang β u darhol kerak, kechiktirish faqat zarar qiladi.lazyβ sahifaning pastidagi rasmlar uchun.
3.6 Responsive rasmlar: srcset va sizes¶
Bitta muammo: telefon ekrani kichik (masalan 360px keng), desktop monitori esa katta (1920px+). Agar siz hammaga bitta katta 2000px rasm bersangiz, telefon foydalanuvchisi o'sha ulkan faylni bekorga yuklaydi β sekin va mobil internet trafigini behuda sarflaydi. Aksincha, kichik rasmni katta ekranda ko'rsatsangiz, u xira (pixellashgan) chiqadi.
Yechim: bir nechta o'lchamdagi rasm tayyorlab, brauzerga "o'zing eng mosini tanla" deyish. Buni srcset qiladi.
srcset β variantlar ro'yxati¶
<img
src="rasm-640.jpg"
srcset="rasm-640.jpg 640w,
rasm-1280.jpg 1280w,
rasm-1920.jpg 1920w"
sizes="(max-width: 700px) 100vw, 50vw"
alt="Tog'dagi quyosh chiqishi"
width="1280" height="720">
Buni qism-qism ochib beramiz:
srcβ "zaxira" rasm.srcsetni tushunmaydigan juda eski brauzerlar shuni ishlatadi.srcsetβ vergul bilan ajratilgan variantlar ro'yxati. Har biri:fayl-nomi <kenglik>w. Bu yerda640w"bu rasmning haqiqiy kengligi 640 piksel" degani (pxemas,wβ width descriptor).sizesβ rasm ekranda qancha joy egallashini brauzerga aytadi.
sizes ni qanday o'qish kerak?¶
sizes="(max-width: 700px) 100vw, 50vw" ni so'zlar bilan o'qisak:
"Agar ekran 700px dan tor bo'lsa, rasm ekran kengligining 100% ini (
100vw) egallaydi. Aks holda β 50% ini (50vw)."
(vw = "viewport width" β ekran kengligining foizi. 100vw = to'liq ekran kengligi.)
Brauzer qanday tanlaydi? U ikki narsani biladi:
1. Ekran/qurilma o'lchami (va piksel zichligi).
2. sizes dan β rasm qancha joy egallashi.
Shulardan kelib chiqib, srcset dagi variantlardan eng mosini o'zi tanlaydi. Sizning ishingiz β variantlarni va o'lchamlarni to'g'ri berish. Qaror brauzerniki, chunki u foydalanuvchining real holatini (ekran, internet tezligi) biladi.
π‘ Ikki xil holat: - Faqat o'lcham farq qilsa (turli ekranlarga turli o'lchamdagi bir xil rasm) β
srcset+sizesyetarli, yuqoridagidek. - Rasm o'zi boshqacha bo'lishi kerak bo'lsa (masalan telefonda kesilgan, fokuslangan variant) β keyingi bo'limdagi<picture>kerak.
3.7 <picture> β art direction va format tanlash¶
<picture> elementi srcset dan ham kuchliroq nazorat beradi. U ikki vazifani bajaradi:
- Art direction β turli ekranlarda butunlay boshqacha rasm ko'rsatish (faqat o'lcham emas).
- Format tanlash β brauzer qo'llab-quvvatlasa, zamonaviy (kichikroq) formatni berish (
webp,avif).
<picture> ichida bir nechta <source> va oxirida bitta <img> bo'ladi. Brauzer <source> larni yuqoridan pastga tekshiradi va birinchi mos kelganini ishlatadi. Hech biri mos kelmasa β <img> ga tushadi (u majburiy, "zaxira" sifatida).
Art direction misoli¶
<picture>
<!-- Tor ekran (telefon): vertikal, yaqindan olingan rasm -->
<source media="(max-width: 600px)" srcset="portret-mobil.jpg">
<!-- Aks holda (desktop): keng, panoramali rasm -->
<source media="(min-width: 601px)" srcset="panorama-desktop.jpg">
<!-- Zaxira: barcha brauzerlar tushunadi -->
<img src="panorama-desktop.jpg" alt="Dengiz qirg'og'idagi mehmonxona" width="1200" height="675">
</picture>
Nega kerak? Keng panoramali rasm telefonning tor ekranida juda kichik va tushunarsiz bo'lib qoladi. Telefon uchun yaqindan olingan, vertikal variant berish β ancha yaxshi tajriba.
Format tanlash (webp / avif)¶
webp va avif β zamonaviy rasm formatlari. Ular jpg/png ga qaraganda bir xil sifatda ancha kichikroq fayl beradi (tezroq yuklanadi). Lekin juda eski brauzerlar ularni tushunmasligi mumkin. <picture> bilan "tushunsang yangisini, tushunmasang eskisini" deya olamiz:
<picture>
<source type="image/avif" srcset="rasm.avif">
<source type="image/webp" srcset="rasm.webp">
<img src="rasm.jpg" alt="Mahsulot surati" width="800" height="800">
</picture>
Brauzer avif ni tushunsa β uni oladi (eng kichik). Tushunmasa, webp ga, u ham bo'lmasa β eski jpg ga tushadi. Foydalanuvchi har doim ishlaydigan variant oladi, qo'llab-quvvatlovchilar esa eng tejamkorini.
π
srcsetvs<picture>β qaysi birini ishlataman? - Faqat o'lcham uchun (bir xil rasm, turli kattalik) β<img srcset sizes>. Soddaroq. - Boshqa rasm yoki format tanlash kerak bo'lsa β<picture>.
3.8 <figure> va <figcaption>¶
Ko'pincha rasmga izoh (caption) kerak bo'ladi β "Rasm 1. ...". Buni shunchaki <p> bilan yozsa bo'lardi, lekin u holda brauzer va qidiruv tizimlari rasm bilan izohning bog'liqligini bilmaydi.
<figure> elementi rasmni va uning izohini bitta mustaqil birlik sifatida o'raydi. Izoh esa <figcaption> ichida yoziladi.
<figure>
<img src="grafik.png" alt="2026-yil sotuv o'sishi grafigi" width="600" height="400">
<figcaption>Rasm 1. 2026-yilda sotuvlar 40% ga oshdi.</figcaption>
</figure>
Nega <figure> ishlatamiz (oddiy <img> o'rniga)?
- Semantik bog'lanish: brauzer va screen reader izoh aynan shu rasmga tegishli ekanini biladi.
- Mustaqillik:
<figure>β "mustaqil" mazmun. Uni matn oqimidan chiqarib, yon tomonga qo'ysangiz ham, ma'no buzilmaydi (xuddi kitobdagi rasm-jadvallar kabi). <figcaption>rasmning tepasida yoki pastida bo'lishi mumkin (<figure>ichida birinchi yoki oxirgi element).
π‘
<figure>faqat rasm uchun emas! U kod parchasi, jadval, diagramma, hatto she'r uchun ham ishlatiladi β har qanday "mustaqil, izohli mazmun" uchun.
β οΈ alt va <figcaption> bir xil emas. alt β rasmni tasvirlaydi (ko'rolmaganlar uchun). figcaption β ko'rinadigan izoh/sarlavha (hammaga). Ularni bir xil qilib takrorlamang; bir-birini to'ldirsin.
3.9 Video: <video> elementi¶
Sahifaga video qo'yish uchun <video> ishlatiladi:
<video controls width="640" height="360" poster="muqova.jpg">
<source src="dars.mp4" type="video/mp4">
<source src="dars.webm" type="video/webm">
<p>Brauzeringiz videoni qo'llab-quvvatlamaydi.
<a href="dars.mp4">Videoni yuklab oling.</a></p>
</video>
Asosiy atributlar:
controlsβ ijro tugmalarini (play, pauza, ovoz, vaqt) ko'rsatadi. β οΈ Buni unutsangiz, foydalanuvchi videoni boshqara olmaydi!width/heightβ o'lchami (yana layout shift oldini oladi).posterβ video boshlangunga qadar ko'rsatiladigan "muqova" rasmi.
Ichidagi <source> elementlari β srcset/picture dagi mantiqqa o'xshaydi: brauzer birinchi qo'llab-quvvatlaydigan formatni tanlaydi. mp4 deyarli hamma joyda ishlaydi, webm esa kichikroq fayl. Eng oxiridagi matn/havola β video umuman ishlamasa ko'rinadigan "zaxira".
Boshqa foydali atributlar:
<!-- Avtomatik boshlanadigan, ovozsiz, takrorlanadigan fon videosi -->
<video autoplay muted loop playsinline width="100%">
<source src="fon.mp4" type="video/mp4">
</video>
autoplayβ sahifa ochilishi bilan o'zi boshlanadi.mutedβ ovozsiz. β οΈ Muhim: brauzerlar ovozli avtoijroni bloklaydi (foydalanuvchini bezovta qilmaslik uchun). Shuning uchunautoplaydeyarli har doimmutedbilan birga keladi.loopβ tugagach qaytadan boshlaydi.playsinlineβ mobil qurilmada videoni to'liq ekranga o'tkazmay, joyida ijro etadi.
π Katta videolarni o'z saytingizda saqlamang. Video fayllari juda og'ir va serverni sekinlashtiradi. Amalda ko'pincha YouTube/Vimeo'ga yuklab,
<iframe>bilan joylashtiriladi (3.11-bo'limga qarang).
3.10 Audio va subtitrlar (<track>)¶
Audio (musiqa, podkast) uchun <audio> ishlatiladi β <video> ga juda o'xshash:
<audio controls>
<source src="podkast.mp3" type="audio/mpeg">
<source src="podkast.ogg" type="audio/ogg">
<p>Brauzeringiz audioni qo'llab-quvvatlamaydi.</p>
</audio>
Mantiq aynan video bilan bir xil: controls tugmalarni ko'rsatadi, <source> lar β brauzer tanlaydigan formatlar.
<track> β subtitrlar va matnli izohlar¶
Video va audioni hamma uchun qulay qilish uchun matnli izohlar qo'shiladi. Buni <track> elementi qiladi:
<video controls width="640" height="360">
<source src="dars.mp4" type="video/mp4">
<!-- O'zbekcha subtitr (standart yoqilgan) -->
<track src="subtitr-uz.vtt" kind="subtitles" srclang="uz" label="O'zbekcha" default>
<!-- Inglizcha subtitr -->
<track src="subtitr-en.vtt" kind="subtitles" srclang="en" label="English">
</video>
srcβ subtitr fayli (.vttformatida β WebVTT).kindβ turi:subtitles(subtitr),captions(eshitish qiyinligi bo'lganlar uchun, ovozlarni ham tasvirlaydi),descriptions(vizual tasvir).srclangβ til kodi (uz,en,ru).labelβ foydalanuvchi menyusida ko'rinadigan nom.defaultβ qaysi subtitr boshida yoqilgan bo'lishini belgilaydi.
Nega kerak? Subtitrlar nafaqat eshitish qiyinligi bo'lganlarga, balki ovozsiz tomosha qiluvchilarga (masalan, jamoat transportida) va boshqa tilda gaplashuvchilarga ham yordam beradi. Bu β accessibility'ning muhim qismi.
3.11 <iframe> β boshqa sahifani joylashtirish¶
<iframe> (inline frame) β bu sizning sahifangiz ichiga boshqa veb-sahifani "deraza" sifatida joylashtirish. Eng ko'p ishlatiladigan holat β YouTube videosi yoki Google xaritasini qo'yish:
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
width="560" height="315"
title="O'quv video darsi"
allowfullscreen
loading="lazy">
</iframe>
srcβ joylashtiriladigan sahifa manzili.titleβ β οΈ accessibility uchun muhim: screen reader iframe nima ekanini shu orqali tushuntiradi. Har doim yozing.allowfullscreenβ to'liq ekranga o'tkazishga ruxsat (videolar uchun).loading="lazy"β iframe og'ir bo'lgani uchun, kerak bo'lganda yuklash foydali.
Xavfsizlik: sandbox¶
β οΈ Diqqat: iframe ichidagi sahifa β bu begona kod. Agar ishonchsiz manbadan sahifa joylashtirsangiz, u sizning sahifangizga zarar yetkazishga urinishi mumkin (oynalarni ochish, yo'naltirish va h.k.).
sandbox atributi iframe'ni "qamoqqa oladi" β unga faqat siz ruxsat bergan narsalarga yo'l beradi:
<!-- Bo'sh sandbox: deyarli hamma narsa bloklangan (eng xavfsiz) -->
<iframe src="https://reklama.example.com" sandbox title="Reklama"></iframe>
<!-- Faqat skript va formaga ruxsat -->
<iframe src="https://widget.example.com"
sandbox="allow-scripts allow-forms"
title="Vidjet"></iframe>
sandbox ni bo'sh yozsangiz β eng qattiq cheklov (skript ishlamaydi, forma yuborilmaydi, navigatsiya bloklanadi). Keyin kerakli ruxsatlarni bittalab qo'shasiz (allow-scripts, allow-forms, allow-same-origin va h.k.).
π Asosiy qoida: iframe'ga faqat kerakli minimum ruxsat bering. "Hammasiga ruxsat berib qo'ya qolay" β xavfsizlik teshigi. Ishonchsiz manbalar uchun
sandboxhar doim ishlating.π‘ Maslahat: YouTube/Google kabi ishonchli xizmatlar o'zlari "embed" (joylashtirish) kodi beradi β uni shunchaki nusxa ko'chiring. O'zingiz qo'lda yozish shart emas.
Mashqlar¶
Quyidagi mashqlarni ketma-ket bajaring. Avval o'zingiz urinib ko'ring, keyin yechimni oching.
Mashq 1 β Uch xil havola¶
Bitta index.html faylida quyidagi uch havolani yarating:
1. Tashqi saytga (https://developer.mozilla.org).
2. Bir papka tashqaridagi uy.html faylga.
3. Shu sahifadagi id="aloqa" bo'limiga.
Yechim
Mashq 2 β Xavfsiz tashqi havola¶
Tashqi saytga (https://example.com) yangi tabda ochiladigan va xavfsiz havola yozing.
Yechim
target="_blank" yangi tabda ochadi, rel="noopener noreferrer" esa tabnabbing hujumidan himoya qiladi.
Mashq 3 β alt ni to'g'irlash¶
Quyidagi rasmlar alt matnlari yomon. Har birini to'g'rilang:
Yechim
<!-- Mazmunli rasm: tasvirlaymiz -->
<img src="ish-stoli.jpg" alt="Noutbuk va qahva turgan yog'och ish stoli">
<!-- Bezak (dekorativ) rasm: bo'sh alt -->
<img src="ajratuvchi-chiziq.png" alt="">
Birinchisi mazmun tashiydi β uni tasvirlaymiz. Ikkinchisi faqat bezak β bo'sh alt="" bilan screen reader uni e'tiborsiz qoldiradi.
Mashq 4 β Layout shift'siz rasm¶
Internet sekin bo'lsa ham sahifa "sakramaydigan" qilib, banner.jpg (1600Γ900) rasmni joylashtiring. Rasm konteynerdan keng bo'lib ketmasin.
Yechim
HTML'dagi width/height brauzerga nisbatni (16:9) beradi β joy oldindan band qilinadi. CSS esa rasmni moslashuvchan qiladi.
Mashq 5 β Responsive rasm¶
manzara rasmining uch o'lchami bor: manzara-480.jpg, manzara-960.jpg, manzara-1440.jpg. Brauzer ekran kengligiga qarab o'zi tanlaydigan <img> yozing. Rasm har doim ekranning to'liq kengligini egallaydi deb faraz qiling.
Yechim
<img
src="manzara-960.jpg"
srcset="manzara-480.jpg 480w,
manzara-960.jpg 960w,
manzara-1440.jpg 1440w"
sizes="100vw"
alt="Tog'lar orasidagi ko'l manzarasi"
width="1440" height="960">
sizes="100vw" β rasm har doim to'liq ekran kengligini egallaydi, shuning uchun brauzer ekranga qarab eng mos faylni tanlaydi.
Mashq 6 β <figure> bilan izohli rasm¶
jamoa.jpg rasmini ko'rinadigan "Rasm 1. Bizning jamoa 2026-yilda" izohi bilan, semantik to'g'ri tarzda joylashtiring.
Yechim
<figure>
<img src="jamoa.jpg" alt="Ofisda turgan o'n kishilik jamoa"
width="800" height="500">
<figcaption>Rasm 1. Bizning jamoa 2026-yilda</figcaption>
</figure>
Diqqat: alt rasmni tasvirlaydi (ko'rolmaganlar uchun), figcaption esa ko'rinadigan izoh β ular bir xil emas.
Mashq 7 β Subtitrli video¶
mahsulot.mp4 videosini ijro tugmalari bilan, o'zbekcha subtitr (uz.vtt, standart yoqilgan) qo'shib joylashtiring. Muqova rasmi β muqova.jpg.
Yechim
<video controls width="640" height="360" poster="muqova.jpg">
<source src="mahsulot.mp4" type="video/mp4">
<track src="uz.vtt" kind="subtitles" srclang="uz" label="O'zbekcha" default>
<p>Brauzeringiz videoni qo'llab-quvvatlamaydi.</p>
</video>
controls β tugmalar, poster β muqova, <track ... default> β boshida yoqilgan o'zbekcha subtitr.
Mashq 8 β Xavfsiz iframe¶
Ishonchsiz https://reklama.example.com sahifasini iframe bilan joylashtiring, lekin u faqat skript ishlata olsin, boshqa hech narsa qila olmasin. title ni unutmang.
Yechim
<iframe
src="https://reklama.example.com"
title="Reklama bloki"
sandbox="allow-scripts"
width="300" height="250"
loading="lazy">
</iframe>
sandbox="allow-scripts" β faqat skriptga ruxsat, qolgan hamma narsa (forma, navigatsiya, popup) bloklangan. Bo'sh sandbox dan ham qattiqroq nazorat β minimum kerakli ruxsat beriladi.
β¬ οΈ Oldingi: 02 β Matn elementlari Β· π README Β· Keyingi: 04 β Jadvallar β‘οΈ