วิธีใช้งาน
- เริ่มจากค่าที่ตั้งไว้ล่วงหน้า หรือปรับระยะเยื้อง ระยะเบลอ ระยะขยาย สี และความทึบของชั้นแรก
- เพิ่มชั้นเพื่อให้ได้มิติที่ดูเป็นธรรมชาติมากขึ้น หรือเลือก “Inset” เพื่อสร้างเงาด้านใน
- ปรับพื้นหลังตัวอย่างและสีของกล่องให้เข้ากับดีไซน์ แล้วคัดลอก CSS
วิธีการทำงาน
แต่ละชั้นของ box-shadow ประกอบด้วยระยะเยื้องแนวนอน ระยะเยื้องแนวตั้ง รัศมีเบลอ ระยะขยาย และสี โดยอาจใส่ inset ไว้ข้างหน้าก็ได้ ค่าระยะเยื้องบวกจะเลื่อนเงาไปทางขวาและลงด้านล่าง การเบลอช่วยให้ขอบเงานุ่มลง และกำหนดเป็นค่าลบไม่ได้ ส่วนระยะขยายจะทำให้เงาใหญ่ขึ้น (ค่าบวก) หรือเล็กลง (ค่าลบ) ก่อนเบลอ หากมีหลายชั้น ให้คั่นแต่ละชั้นด้วยเครื่องหมายจุลภาค โดยชั้นแรกจะแสดงอยู่ด้านบนสุด
โดยทั่วไป เงาที่ดูมีมิติมักประกอบด้วยเงาขนาดเล็กที่ขอบคมและเงาขนาดใหญ่ที่ฟุ้งกว่าโดยใช้ความทึบต่ำ ซึ่งเป็นลักษณะของค่าที่ตั้งไว้ล่วงหน้า “ยกสูง” สีจะเขียนในรูปแบบ rgba() เพื่อระบุความทึบแสงอย่างชัดเจน เงาจะเป็นไปตาม border-radius ขององค์ประกอบและไม่กินพื้นที่ในเลย์เอาต์ จึงไม่ทำให้องค์ประกอบอื่นขยับ
เงาที่มีค่าเบลอสูงมากบนองค์ประกอบหลายรายการอาจทำให้การเลื่อนหน้าจอช้าลงในโทรศัพท์รุ่นเริ่มต้น หากต้องการทำภาพเคลื่อนไหวให้เงา โดยทั่วไปการค่อย ๆ แสดง pseudo-element ที่มีเงาอยู่แล้วจะลื่นไหลกว่าการทำภาพเคลื่อนไหวกับ box-shadow โดยตรง
ตัวอย่าง
การ์ดบนหน้าสีอ่อน
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.12), 0 8px 24px -4px rgba(0, 0, 0, 0.18); ช่วยให้การ์ดมีทั้งขอบคมชัดและเงาฟุ้งที่ทำให้ดูยกขึ้น
วงแหวนโฟกัสที่ไม่ทำให้เลย์เอาต์ขยับ
ชั้นเงาที่มีระยะเยื้อง 0 เบลอ 0 และระยะขยาย 3px โดยใช้สีแบรนด์ของคุณ จะสร้างวงแหวนทึบรอบปุ่ม ต่างจากเส้นขอบตรงที่ไม่เปลี่ยนขนาดขององค์ประกอบ
ช่องกรอกข้อมูลแบบกดลง
inset 0 2px 6px 0 rgba(0, 0, 0, 0.25) ทำให้ช่องกรอกข้อความดูเหมือนยุบเข้าไปเล็กน้อย
คำถามที่พบบ่อย
box-shadow ต่างจาก filter: drop-shadow() อย่างไร
box-shadow เป็นไปตามกรอบและ border-radius ขององค์ประกอบ และรองรับระยะขยายกับ inset ส่วน drop-shadow() จะเป็นไปตามรูปร่างที่มองเห็น รวมถึงพื้นที่โปร่งใสในรูปภาพ PNG หรือ SVG แต่ไม่รองรับระยะขยายหรือ inset
ทำไมเงาของฉันถึงถูกตัด
องค์ประกอบแม่ที่กำหนด overflow: hidden จะตัดทุกอย่างที่อยู่นอกกรอบ รวมถึงเงาด้วย เพิ่ม padding ให้กับองค์ประกอบแม่หรือย้ายกฎ overflow ไปไว้ที่อื่น
ควรใช้เงากี่ชั้น
ส่วนใหญ่ใช้เพียงหนึ่งหรือสองชั้นก็เพียงพอ การเพิ่มชั้นอาจทำให้เงาดูเนียนขึ้น แต่ใช้ทรัพยากรในการวาดมากขึ้นเล็กน้อย ซึ่งมีผลกับรายการที่ยาว
ความเป็นส่วนตัว
สร้าง CSS ในเบราว์เซอร์ของคุณ โดยไม่มีการอัปโหลดหรือจัดเก็บข้อมูล