Box-shadow ба text-shadow
Shadow буюу сүүдэр нь элемент болон текстэд гүн, гэрэл, тодрол нэмдэг. CSS-д хоёр төрлийн shadow байдаг: box-shadow ба text-shadow.
box-shadow
Элементийн гадна (эсвэл дотор) сүүдэр нэмнэ:
.хайрцаг {
box-shadow: X Y blur spread өнгө;
}
Утгуудын тайлбар:
| Утга | Тайлбар | | ------ | --------------------------------------------- | | X | Хэвтээ шилжилт — эерэг = баруун, сөрөг = зүүн | | Y | Босоо шилжилт — эерэг = доош, сөрөг = дээш | | blur | Бүдгэрэлтийн хэмжээ — их тоо = илүү бүдэг | | spread | Тэлэлт — эерэг = том, сөрөг = жижиг | | өнгө | Сүүдрийн өнгө |
/* Энгийн жишээ */
.энгийн {
box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3);
}
/* Spread нэмсэн */
.тэлсэн {
box-shadow: 0 0 0 4px #a78bfa; /* outline шиг хүрээ */
}
/* Бүдгэрсэн, томорсон */
.үүл {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}
Offset-ийн утгуудын жишээ
/* Баруун доод сүүдэр */
.баруун-доод {
box-shadow: 6px 6px 12px rgba(0, 0, 0, 0.4);
}
/* Дээш (дотроос гэрэлтэх эффект) */
.дээш {
box-shadow: 0 -4px 12px rgba(167, 139, 250, 0.3);
}
/* Бүх талд тэгш */
.тэгш {
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
}
inset — дотор сүүдэр
inset гэж бичвэл сүүдэр элементийн дотор харагдана:
.дотор {
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.5);
}
/* Дотроос гэрэлтэх эффект */
.дотор-гэрэл {
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
Олон shadow давхарлах
Таслалаар тусгаарлан хэд хэдэн shadow нэгэн зэрэг бичнэ:
.олон-сүүдэр {
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.3),
0 4px 8px rgba(0, 0, 0, 0.2),
0 16px 32px rgba(0, 0, 0, 0.1);
}
Давхарласан shadow нь илүү натурал харагддаг — бодит ертөнцийн гэрэл ийм л байдаг.
Glow эффект
Blur их, spread жоохон, өнгөт — гэрэлтүүлэх эффект:
.ягаан-гэрэл {
box-shadow: 0 0 20px rgba(167, 139, 250, 0.5);
}
.цэнхэр-гэрэл {
box-shadow: 0 0 30px rgba(96, 165, 250, 0.4);
}
/* Хоёр давхарласан glow */
.хүчтэй-гэрэл {
box-shadow:
0 0 10px rgba(167, 139, 250, 0.6),
0 0 40px rgba(167, 139, 250, 0.3);
}
Hover дээр shadow
.карт {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
transition:
box-shadow 0.3s ease,
transform 0.3s ease;
}
.карт:hover {
box-shadow:
0 8px 24px rgba(0, 0, 0, 0.4),
0 0 20px rgba(167, 139, 250, 0.15);
transform: translateY(-4px);
}
text-shadow
Текстэд сүүдэр нэмнэ. box-shadow-ийн адил боловч spread ба inset байхгүй:
.текст {
text-shadow: X Y blur өнгө;
}
/* Энгийн сүүдэр */
.энгийн-текст {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}
/* Glow эффект */
.гэрэлт-текст {
color: #a78bfa;
text-shadow: 0 0 20px rgba(167, 139, 250, 0.8);
}
/* Тодрол нэмэх */
.тод-текст {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
}
text-shadow олон давхарлах
.гоё-гарчиг {
color: #f1f5f9;
text-shadow:
0 0 10px rgba(167, 139, 250, 0.8),
0 0 30px rgba(167, 139, 250, 0.5),
0 0 60px rgba(167, 139, 250, 0.3);
}
Бодит жишээ: Дизайн системийн карт
/* Тайван байдал */
.карт {
background: #0f172a;
border: 1px solid #1e293b;
border-radius: 12px;
padding: 24px;
box-shadow:
0 1px 3px rgba(0, 0, 0, 0.4),
0 4px 12px rgba(0, 0, 0, 0.3);
transition:
box-shadow 0.3s ease,
transform 0.3s ease;
}
/* Hover */
.карт:hover {
box-shadow:
0 4px 12px rgba(0, 0, 0, 0.4),
0 16px 40px rgba(0, 0, 0, 0.3),
0 0 0 1px rgba(167, 139, 250, 0.1);
transform: translateY(-4px);
}
/* Товчны glow */
.товч-ягаан {
background: #a78bfa;
color: #0b1120;
padding: 10px 20px;
border-radius: 8px;
box-shadow: 0 0 20px rgba(167, 139, 250, 0.4);
transition: box-shadow 0.2s ease;
}
.товч-ягаан:hover {
box-shadow: 0 0 30px rgba(167, 139, 250, 0.6);
}
Гүйцэтгэлийн тайлбар
box-shadowньborder-ийн оронд ашиглаж болно — гэхдээ гүйцэтгэлд ойролцоо- Маш олон, маш том shadow хурдыг бууруулж болно — хэрэгцээтэй хэмжээнд хэрэглэ
will-change: box-shadow→ GPU ашиглуулах боломжтой (хэт их бүү бич)
Дараагийн хичээлд:
gradient — өнгөний шилжилт хэрхэн хийх, linear-gradient(), radial-gradient(), conic-gradient() функцуудыг судална.