סקירה כללית
כדי להחיל שיפוע שקיפות על הקצוות של מאגר (למשל, כדי לציין שיש עוד תוכן שאפשר לגלול אליו או כדי להוסיף אפקט של עמעום לטקסט), משתמשים ב-CSS Masking עם שיפוע לינארי. הגישה הזו עדיפה על שימוש בשכבת-על שקופה למחצה, כי היא למעשה מעמעמת את התוכן עצמו, ומאפשרת לרקע להופיע באופן טבעי בלי להפריע לבחירת הטקסט או לאירועי הסמן.
הטמעה
כדי להטמיע דהייה של קצוות רכים:
הבהרה של הקצה התחתון של קונטיינר
זה שימושי כדי לציין שיש עוד תוכן למטה באזור שאפשר לגלול בו.
.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 */
}
}