Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

คุณสมบัติ boxShadow ของ HTML DOM Style: เงาขององค์ประกอบ

คุณสมบัติ boxShadow (CSS: box-shadow) ใช้สำหรับเพิ่มเงาให้กับกรอบขององค์ประกอบ สร้างความลึกและมิติ

ไวยากรณ์ (Syntax)

object.style.boxShadow = "none|h-offset v-offset blur spread color|inset|initial|inherit"

พารามิเตอร์ (เรียงลำดับ)

พารามิเตอร์คำอธิบายจำเป็น
h-offsetระยะห่างแนวนอน (+ขวา, -ซ้าย)✓
v-offsetระยะห่างแนวตั้ง (+ล่าง, -บน)✓
blurรัศมีการเบลอ (ค่ามาก = เบลอมาก)✗ (default 0)
spreadรัศมีการขยาย/หดตัว (+ใหญ่ขึ้น, -เล็กลง)✗ (default 0)
colorสีเงา (รองรับทุกรูปแบบ CSS)✗ (default currentColor)
insetเงาภายใน (แทนที่จะเป็นภายนอก)✗

ตัวอย่างการใช้งาน

<!DOCTYPE html>
<html>
<head>
<style>
  #DIV1 {
    height: 100px;
    width: 100px;
    box-shadow: 10px 10px 3px orange;
  }
</style>
<script>
  function changeBoxShadow() {
    document.getElementById("DIV1").style.boxShadow = "1px 10px 10px 10px green";
    document.getElementById("Sample").innerHTML = "เงาของกล่องถูกเปลี่ยนแล้ว";
  }
</script>
</head>
<body>
<div id="DIV1">นี่คือ div ตัวอย่าง</div>
<p>คลิกปุ่มเพื่อเปลี่ยนเงาของ div ด้านบน</p>
<button onclick="changeBoxShadow()">เปลี่ยน Box Shadow</button>
<p id="Sample"></p>
</body>
</html>

ผลลัพธ์

ก่อน: เงาสีส้ม offset 10px,10px blur 3px
หลัง: เงาสีเขียว offset 1px,10px blur 10px spread 10px

ตัวอย่างรูปแบบเงาทั่วไป

เอฟเฟกต์CSS
เงามาตรฐานbox-shadow: 0 2px 4px rgba(0,0,0,0.1);
เงาลึก (Elevation)box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
เงาภายใน (Inset)box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
Glow / Neonbox-shadow: 0 0 20px #ff00ff, 0 0 40px #ff00ff;
Neumorphismbox-shadow: 8px 8px 16px #d1d9e6, -8px -8px 16px #ffffff;
Multiple Shadowsbox-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);

หลายเงา (Multiple Shadows)

/* คั่นด้วยจุลภาค */
box-shadow: 
  0 1px 3px rgba(0,0,0,0.12),
  0 1px 2px rgba(0,0,0,0.24),
  inset 0 -1px 0 rgba(255,255,255,0.1);

การเคลื่อนไหว (Animation)

.card {
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  transition: box-shadow 0.3s ease;
}
.card:hover {
  box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
}

ประสิทธิภาพ (Performance)

  • หลีกเลี่ยง blur radius ใหญ่เกินไป (>50px) บนองค์ประกอบใหญ่
  • ใช้ will-change: box-shadow สำหรับ Animation
  • Drop shadow (filter: drop-shadow()) ใช้ GPU เร็วกว่าสำหรับรูปทรงซับซ้อน

การรองรับเบราว์เซอร์

รองรับเต็มรูปแบบ Chrome 10+, Firefox 4+, Safari 5.1+, Edge 12+, IE9+