Responsive HTML
Responsive дизайн гэдэг нь вэб хуудас гар утас, таблет, компьютер зэрэг ямар ч хэмжээний дэлгэцэнд зөв харагдах технологи юм. CSS-ийн media query үндсэн хэрэгсэл боловч HTML-д ч responsive зургийг зөв оруулах тусгай механизм байдаг.
Viewport meta tag
<head>
<!-- Энэ мөргүй гар утсан дахь хуудас маш жижигхэн харагдана -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
width=device-width нь хуудасны өргөнийг дэлгэцийн бодит өргөнтэй тэнцүүлнэ. initial-scale=1.0 нь анхны томруулалтыг 100% болгоно.
Энэ tag байхгүй бол мобайл хөтөч хуудсыг 980px өргөнтэй гэж тооцоод жижигрүүлж харуулдаг — текст унших аргагүй болдог.
Зургийн responsive үндэс
Энгийн <img> зурагт CSS-д max-width: 100% тохируулвал responsive болно:
<img src="зураг.jpg" alt="Тайлбар" style="max-width: 100%; height: auto;" />
Гэхдээ энэ нь том зургийг жижиг дэлгэцэнд ч татаж авна — гар утасны интернетэнд удаан. Үүнийг шийдэхийн тулд srcset ашиглана.
srcset — дэлгэцийн нягтралд тохирох зураг
srcset нь нэг <img>-д олон хэмжээний зураг зааж өгдэг. Хөтөч дэлгэцийн нягтрал болон өргөнөөс хамааран хамгийн тохирохыг татна:
<!-- w дескриптор: зургийн бодит өргөнийг заана -->
<img
src="зураг-800.jpg"
srcset="
зураг-400.jpg 400w,
зураг-800.jpg 800w,
зураг-1200.jpg 1200w
"
alt="Уулзуурын зураг"
/>
Хөтөч дэлгэцийн өргөн болон пиксел нягтралыг харгалзан тохирох хэмжээг автоматаар сонгоно. src attribute нь srcset дэмжихгүй хуучин хөтчүүдэд ашиглагдана.
sizes — зургийн харагдах хэмжээг заах
srcset дан нэрлэхэд хөтөч зургийг viewport-ийн 100% өргөнтэй гэж таамаглана. Гэхдээ зураг зөвхөн баганад харагдах бол sizes ашиглана:
<img
src="зураг-800.jpg"
srcset="
зураг-400.jpg 400w,
зураг-800.jpg 800w,
зураг-1200.jpg 1200w
"
sizes="
(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
33vw
"
alt="Гурван баганын зураг"
/>
Тайлбар: sizes-ийн утгыг хөтөч дараалан шалгана:
- Viewport 600px-ээс бага бол зураг viewport-ийн 100% (
100vw) - 1200px-ээс бага бол 50%
- Бусад тохиолдолд 33%
Дараа нь хөтөч тухайн харагдах хэмжээ болон дэлгэцийн DPR (device pixel ratio)-тай тохирох srcset-ийн зургийг сонгоно.
<picture> элемент — уран гар шийдэл
<picture> нь зөвхөн хэмжээ биш, огт өөр зураг харуулах боломж олгодог — жишээ нь нарийн дэлгэцэнд crop хийсэн зураг, өргөн дэлгэцэнд бүтэн зураг:
<picture>
<!-- Нарийн дэлгэцэнд — квадрат crop -->
<source
media="(max-width: 600px)"
srcset="зураг-mobile-400.jpg 400w, зураг-mobile-800.jpg 800w"
/>
<!-- Дунд дэлгэцэнд -->
<source
media="(max-width: 1200px)"
srcset="зураг-tablet-800.jpg 800w, зураг-tablet-1200.jpg 1200w"
/>
<!-- Том дэлгэцэнд, default — <img> заавал байна -->
<img
src="зураг-desktop-1200.jpg"
srcset="зураг-desktop-1200.jpg 1200w, зураг-desktop-2400.jpg 2400w"
alt="Дэлгэцийн хэмжээгээр өөрчлөгдөх зураг"
/>
</picture>
<img> нь <picture> дотор заавал байна — хуучин хөтч болон alt текстэд зориулагдана.
Retina (HiDPI) дэлгэц
Retina дэлгэц нь CSS пикселийн оронд 2x эсвэл 3x физик пиксел ашигладаг. Ердийн зураг бүдэгрэх тул өндөр нягтралтай зураг хэрэгтэй:
<!-- x дескриптор: дэлгэцийн DPR-д тохируулна -->
<img
src="лого.png"
srcset="лого.png 1x, лого@2x.png 2x, лого@3x.png 3x"
alt="Лого"
width="120"
height="40"
/>
1x — энгийн дэлгэц, 2x — Retina/HiDPI, 3x — гар утасны өндөр нягтрал.
Орчин үеийн формат — WebP, AVIF
<picture>
<!-- AVIF — хамгийн шинэ, хамгийн жижиг хэмжээ -->
<source type="image/avif" srcset="зураг.avif" />
<!-- WebP — өргөн дэмжлэгтэй, JPEG-ээс 30% жижиг -->
<source type="image/webp" srcset="зураг.webp" />
<!-- JPEG — хуучин хөтчийн fallback -->
<img src="зураг.jpg" alt="Оновчлогдсон зураг" />
</picture>
Хөтөч дэмждэг хамгийн дээд форматаа сонгоно. AVIF болон WebP нь ижил чанарт JPEG-ээс хамаагүй жижиг хэмжээтэй тул хуудасны ачаалах хурд эрс сайжирна.
Дараагийн хичээлд:
<template> болон <slot> элементийг судлана — HTML хэлбэрчлэлийг JavaScript-ээр клонлож динамик агуулга үүсгэх, Shadow DOM-ийн үндсийг үзнэ.