Media query
Media query нь дэлгэцийн хэмжээ, чиглэл, хэрэглэгчийн тохируулгаас хамаарч өөр өөр CSS ажиллуулах механизм юм. Responsive дизайны гол хэрэгсэл.
Үндсэн синтакс
@media (нөхцөл) {
/* Нөхцөл үнэн бол энэ CSS ажиллана */
.element {
property: value;
}
}
min-width — доод хязгаараас дээш
Viewport дор хаяж заасан өргөнтэй болоход CSS ажиллана. Mobile-first аргад хэрэглэнэ:
/* Анхдагч: бүх дэлгэцэд */
.card {
font-size: 14px;
}
/* 768px ба түүнээс өргөн дэлгэцэд */
@media (min-width: 768px) {
.card {
font-size: 16px;
}
}
/* 1024px ба түүнээс өргөн дэлгэцэд */
@media (min-width: 1024px) {
.card {
font-size: 18px;
}
}
max-width — дээд хязгаараас доош
Viewport заасан өргөнөөс бага байхад CSS ажиллана. Desktop-first аргад хэрэглэнэ:
/* Анхдагч: том дэлгэц */
.nav {
display: flex;
flex-direction: row;
}
/* 768px-ээс бага дэлгэцэд */
@media (max-width: 767px) {
.nav {
flex-direction: column;
}
}
Зөвлөмж:
min-widthбаmax-widthхоёрыг хольж хэрэглэхгүй байх нь кодыг уншихад хялбар болгоно. Нэг аргыг сонгоод тогтмол мөрдөнө.
Стандарт breakpoint утгууд
Tailwind CSS-ийн breakpoint-уудыг суурь болгон ашиглавал нийтлэг тохиролцоо сахигдана:
/* xs — гар утас (375px хүртэл, анхдагч) */
/* sm — том гар утас */
@media (min-width: 640px) {
}
/* md — планшет */
@media (min-width: 768px) {
}
/* lg — жижиг laptop */
@media (min-width: 1024px) {
}
/* xl — desktop */
@media (min-width: 1280px) {
}
/* 2xl — том дэлгэц */
@media (min-width: 1536px) {
}
orientation — чиглэл
/* Хөндлөн горим */
@media (orientation: landscape) {
.video-player {
height: 100vh;
}
}
/* Босоо горим */
@media (orientation: portrait) {
.video-player {
height: 50vh;
}
}
prefers-color-scheme — dark/light горим
Хэрэглэгчийн систем dark горимд тохируулагдсан эсэхийг шалгана:
/* Анхдагч: цайвар горим */
:root {
--bg: #ffffff;
--text: #1e293b;
}
/* Систем dark горимд байвал */
@media (prefers-color-scheme: dark) {
:root {
--bg: #0b1120;
--text: #f1f5f9;
}
}
body {
background-color: var(--bg);
color: var(--text);
}
Нөхцөлүүдийг хослуулах
/* and — хоёр нөхцөл хоёулаа үнэн байх */
@media (min-width: 768px) and (max-width: 1023px) {
/* зөвхөн планшет */
}
/* , (таслал) — нэг нь үнэн байхад хангалттай (OR) */
@media (max-width: 480px), (orientation: portrait) {
/* гар утас эсвэл босоо чиглэл */
}
/* not — урвуу нөхцөл */
@media not (min-width: 768px) {
/* 768px-ээс бага */
}
Бодит жишээ — navigation
/* Гар утас: hamburger menu (JS-тэй хамт) */
.nav-links {
display: none;
flex-direction: column;
gap: 8px;
}
.nav-links.open {
display: flex;
}
.hamburger {
display: block; /* гар утас дээр харагдана */
}
/* Планшет ба дээш: horizontal navigation */
@media (min-width: 768px) {
.nav-links {
display: flex; /* үргэлж харагдана */
flex-direction: row;
gap: 24px;
}
.hamburger {
display: none; /* нуугдана */
}
}
Grid-тэй хослуулах жишээ
.card-grid {
display: grid;
grid-template-columns: 1fr; /* гар утас: 1 багана */
gap: 16px;
}
@media (min-width: 640px) {
.card-grid {
grid-template-columns: 1fr 1fr; /* планшет: 2 багана */
}
}
@media (min-width: 1024px) {
.card-grid {
grid-template-columns: repeat(3, 1fr); /* desktop: 3 багана */
gap: 24px;
}
}
Дараагийн хичээлд:
Mobile-first дизайны философи ба давуу талыг дэлгэрэнгүй авч үзнэ. min-width media query-г системтэй ашиглан CSS-г хэрхэн зохион байгуулах талаар практикаар судална.