התפוגגות תוכן עם קצוות רכים

תכונות באינטרנט: מסכות

סקירה כללית

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