نمای کلی
برای اعمال گرادیان شفافیت به لبههای محفظه (مثلاً برای نشان دادن اینکه محتوای بیشتری برای پیمایش دردسترس است یا برای محو کردن نوشتار)، از «پوشش 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%);
}
محو کردن لبههای بالا و پایین
میتوانید از یک گرادیان با چند توقف رنگ برای محو کردن هر دو لبه استفاده کنید.
.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 */
}
}