ภาพรวม
หากต้องการใช้การไล่ระดับสีแบบโปร่งใสกับขอบของคอนเทนเนอร์ (เช่น เพื่อระบุว่ามีเนื้อหาเพิ่มเติมให้เลื่อนดูหรือเพื่อทำให้ข้อความจางลง) ให้ใช้การมาสก์ CSS กับการไล่ระดับสีแบบเส้นตรง วิธีนี้ดีกว่าการใช้การวางซ้อนกึ่งโปร่งใสเนื่องจากจะทำให้เนื้อหาจางลงจริงๆ ซึ่งช่วยให้พื้นหลังแสดงอย่างเป็นธรรมชาติโดยไม่รบกวนการเลือกข้อความหรือเหตุการณ์เคอร์เซอร์
การใช้งาน
วิธีใช้การเฟดขอบแบบนุ่มนวล
การทำให้ขอบด้านล่างของคอนเทนเนอร์จางลง
ซึ่งมีประโยชน์ในการระบุว่ามีเนื้อหาเพิ่มเติมด้านล่างในพื้นที่ที่เลื่อนได้
.container {
/* Enable scrolling */
overflow-y: auto;
/* MANDATORY: Use vendor prefix for wider support in older browsers */
-webkit-mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
/* Standard property for modern browsers */
mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
}
การเฟดทั้งขอบด้านบนและด้านล่าง
คุณสามารถใช้การไล่ระดับสีเดียวที่มีจุดสีหลายจุดเพื่อทำให้ขอบทั้ง 2 ด้านจางลงได้
.dual-fade-container {
/* Content is visible between 10% and 90% of the height */
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
}
กลยุทธ์สำรอง
หากเบราว์เซอร์ไม่รองรับ mask-image หรือเวอร์ชันที่มีคำนำหน้า ให้ทำดังนี้
- เนื้อหาจะไม่จางลงและจะแสดงโดยมีขอบที่คมชัด
- ตรวจสอบว่าอินเทอร์เฟซยังคงทำงานได้และเนื้อหาอ่านได้โดยไม่ต้องมีการเฟด (การเพิ่มประสิทธิภาพแบบต่อเนื่อง)
- คุณสามารถใช้การวางซ้อนแบบกึ่งโปร่งใสเป็นทางเลือกสำรองได้ แต่โปรดทราบว่าวิธีนี้จำเป็นต้องทราบสีพื้นหลังและอาจรบกวนการเลือกข้อความ เว้นแต่จะใช้
pointer-events: none
/* Fallback using an overlay for browsers that do not support masking */
@supports (not (mask-image: linear-gradient(to bottom, black, transparent))) and (not (-webkit-mask-image: linear-gradient(to bottom, black, transparent))) {
.container {
position: relative;
}
.container::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 20%;
/* Fallback assumes a solid background color (e.g., white) */
background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1));
pointer-events: none; /* Allow interaction with text underneath */
}
}