אפשרויות נוספות

כשתוכן חורג מהקטע הראשי שלו, יש הרבה דרכים לטיפול בו. אפשר לגלול כדי להוסיף עוד רווח, לחתוך את הקצוות האחרונים, לסמן את נקודת החיתוך בשלוש נקודות ועוד. חשוב במיוחד להביא בחשבון את האפשרות של זליגת תוכן כשמפתחים אפליקציות לנייד ומשתמשים במסכים בגדלים שונים.

יש שתי אפשרויות שונות לחיתוך ב-CSS; התכונה text-overflow תעזור בהנחיות טקסט בודדות, והמאפיינים overflow יעזרו לשלוט בגלישה במודל של התיבה.

גלישת שורה אחת עם text-overflow

משתמשים במאפיין text-overflow בכל אלמנט שמכיל צמתים של טקסט, למשל, פסקה, <p>. היא מציינת איך הטקסט ייראה כשהוא לא מתאים לשטח הזמין של הרכיב. כל טקסט ה-HTML בדף שניתן להצגה נמצא בצומתי טקסט. כדי להשתמש ב-text-overflow צריך שורה אחת של טקסט ללא גלישת טקסט, לכן צריך גם להגדיר את overflow כ-hidden ולהגדיר ערך white-space שימנע גלישת טקסט.

p {
   
text-overflow: ellipsis;
   
overflow: hidden;
   
white-space: nowrap;
}

שימוש במאפייני overflow

מאפייני גלישה מוגדרים ברכיב כדי לקבוע מה קורה כשהצאצאים שלו צריכים יותר מקום ממה שזמין. זו יכולה להיות פעולה מכוונת, למשל במפה אינטראקטיבית כמו מפות Google, שבה המשתמש מזיז את האצבע על תמונה גדולה שנחתכה לגודל מסוים. המצב הזה עשוי להיות גם לא מכוון, למשל באפליקציית צ'אט שבה המשתמש מקליד הודעה ארוכה שלא נכנסת לבועת הטקסט.

אפשר לחשוב על החריגה בשני חלקים. לרכיב ההורה יש שטח מוגבל שלא ישתנה. אפשר לחשוב עליו כחלון. רכיבי הצאצא הם תוכן שמבקש יותר מקום מההורה. אפשר לחשוב על זה בתור מה שאתם מסתכלים דרך החלון. ניהול ה-overflow יעזור לכם לקבוע איך החלון יכיל את התוכן הזה.

גלילה בציר האנכי והאופקי

המאפיין overflow-y קובע את האפשרות של חרגה פיזית לאורך הציר האנכי של אזור התצוגה במכשיר, ולכן גורם לגלילה למעלה ולמטה.

המאפיין overflow-x קובע את האופן שבו יתבצע זליגת נתונים (overflow) לאורך הציר האופקי של אזור התצוגה במכשיר, ולכן הוא קובע את הכיוון שבו יתבצע הגלילה – שמאלה או ימינה.

תכונות לוגיות של כיוון הגלילה

תמיכה בדפדפן

  • Chrome: לא נתמך.
  • Edge: לא נתמך.
  • Firefox: 69.
  • Safari: לא נתמך.

מקור

המאפיינים overflow-inline ו-overflow-block מגדירים את האפשרויות הנוספות על סמך כיוון המסמך ומצב הכתיבה.

הקיצור של overflow

הקיצורי דרך overflow מגדירים את הסגנונות overflow-x ו-overflow-y בשורה אחת:

overflow: hidden scroll;

אם ציינת שתי מילות מפתח, הראשונה חלה על overflow-x והשנייה על overflow-y. אחרת, גם overflow-x וגם overflow-y משתמשים באותו ערך.

ערכים

בואו נבחן מקרוב את הערכים ומילות המפתח שזמינים לנכסים מסוג overflow.

overflow: visible (ברירת מחדל)
בלי להגדיר את הנכס, overflow: visible הוא ערך ברירת המחדל לאינטרנט. כך אפשר להבטיח שהתוכן אף פעם לא יוסתר בטעות, ותואם לעקרונות הליבה של "לעולם לא להסתיר תוכן" או "פריסות בטוחות של פריסות מדויקות".
overflow: hidden
עם overflow: hidden, התוכן חתוך בכיוון שצוין ולא מוצגות סרגליות גלילה כדי להציג אותו.
overflow: scroll
overflow: scroll מאפשרת למשתמשים לגלול בתוכן באמצעות סרגל גלילה. גם אם התוכן לא גולש כרגע, סרגלי גלילה יוצגו. זוהי דרך מצוינת לצמצם את התנודות העתידיות בפריסה, אם בעתיד יהיה אפשר לגלול בקונטיינר, למשל על סמך שינוי הגודל, ולהכין את המשתמש מבחינה ויזואלית לאזורים שניתן לגלול בהם.
overflow: clip
כמו overflow: hidden, התוכן עם overflow: clip חתוך לתיבת ה-padding של הרכיב. ההבדל בין clip לבין hidden הוא שמילת המפתח clip אוסרת גם על גלילה, כולל גלילה פרוגרמטית.
overflow: auto
לבסוף, הערך הנפוץ ביותר, overflow: auto. כך מכבדים את ההעדפות של המשתמש ומציגים סרגל גלילה אם צריך, אבל מסתירים אותו כברירת מחדל ומעבירים את האחריות על הגלילה למשתמש ולדפדפן.

גלילה ואפשרויות נוספות

התנהגויות רבות של overflow כוללות סרגל גלילה, אבל יש כמה תכונות והתנהגויות גלילה ספציפיות שיכולות לעזור לכם לשלוט בגלילה בקונטיינר של עודף התוכן.

גלילה ונגישות

חשוב לוודא שהמיקוד הוא על אזור הגלילה כדי שמשתמשי המקלדת יוכלו לעבור אל התיבה ואז להשתמש במקשי החיצים כדי לגלול.

כדי לאפשר לתיבת גלילה לקבל את המיקוד, מוסיפים שם עם המאפיין tabindex="0", שם עם המאפיין aria-labelledby ומאפיין role מתאים. לדוגמה:

<div tabindex="0" role="region" aria-labelledby="id-of-descriptive-text">
    content
</div>

לאחר מכן אפשר להשתמש ב-CSS כדי לציין שהתיבה נמצאת ב-focus, באמצעות המאפיין outline כדי לספק רמז חזותי לכך שאפשר יהיה לגלול בה עכשיו.

בשימוש ב-CSS לאכיפת נגישות, אדריאן רוסלי (Adrian Roselli) מדגים איך CSS יכול לעזור למנוע נסיגה בנגישות. למשל: כדי להפעיל גלילה ולהוסיף את אינדיקטור המיקוד רק אם נעשה שימוש במאפיינים הנכונים. הכללים הבאים מאפשרים לגלול את התיבה רק אם יש לה מאפיינים מסוג tabindex, aria-labelledby ו-role.

[role][aria-labelledby][tabindex] {
 
overflow: auto;
}

[role][aria-labelledby][tabindex]:focus {
 
outline: .1em solid blue;
}

מיקום סרגל הגלילה בתוך מודל התיבה

סרגל הגלילה תופס מקום בתוך תיבת הארגז, ויכול להתחרות על מקום אם inline ולא overlaid. במודול של מודל התיבה מוסבר בהרחבה על המקור הפוטנציאלי הזה לשינוי הפריסה.

root-scroller לעומת implicit-scroller

יכול להיות שתשימו לב שלחלק מהגוללים יש התנהגות של משיכה לרענון והתנהגויות מיוחדות אחרות, במיוחד בפיתוח לאפליקציות לנייד ולאפליקציות היברידיות. התנהגות הגלילה הזו מתרחשת בגלילה ברמה הבסיסית. בדף יש רק כלי אחד לגלילה ברמה הבסיסית (root). כברירת מחדל, הרכיב documentElement הוא רכיב הגלילה ברמה הבסיסית של הדף. עם זאת, אם משנים את הרכיב הזה, אפשר להחיל את ההתנהגויות המיוחדות על רכיבי גלילה אחרים מלבד documentElement. אנחנו קוראים לרכיב הגלילה החדש הזה רכיב הגלילה ברמה הבסיסית (implicit root scroller).

כדי ליצור סרגל גלילה ברמה הבסיסית, אפשר להשתמש בהצגת סרגל גלילה. לשם כך, ממקמים מאגר כקבוע, מוודאים שהוא מכסה את כל אזור התצוגה ומגדירים לו את הערך z-index בראש הרשימה עם סרגל גלילה. כאן אפשר לראות גלילה ברמה הבסיסית (root) לעומת גלילה משתמעת מקוננת.

בסרטון מוצג גלילה ברמה הבסיסית עם התנהגות קפיצה ותכונות עיצוב חדשות,
בהשוואה לגלילה ברמה משתמעת ללא התנהגות גלילה משופרת.

scroll-behavior

תמיכה בדפדפן

  • Chrome: 61.
  • Edge:‏ 79.
  • Firefox: 36.
  • Safari: 15.4.

מקור

scroll-behavior מאפשר לכם להביע הסכמה לגלילה מבוקרת של הדפדפן אל רכיבים. ההגדרה הזו מאפשרת לקבוע איך יטופלו ניווט בתוך הדף, כמו .scrollTo() או בקישורים.

האפשרות הזו שימושית במיוחד כשמשתמשים בה עם prefers-reduced-motion כדי לציין את התנהגות הגלילה על סמך העדפת המשתמש.

@media (prefers-reduced-motion: no-preference) {
 
.scroll-view {
   
scroll-behavior: auto;
 
}
}

overscroll-behavior

תמיכה בדפדפן

  • Chrome: 63.
  • קצה: 18.
  • Firefox: 59.
  • Safari: 16.

מקור

אם הגעתם פעם לסוף שכבת-על מודאלית, ולאחר מכן המשכתם לגלול והדף מאחורי תנועת שכבת-העל, זהו שרשור הגלילה, או מבעבע אל מאגר הגלילה ההורה. המאפיין overscroll-behavior מאפשר למנוע זליגה של גלילה מעבר לקצה למאגר הורה (שנקראת שרשור גלילה).

בדיקת ההבנה

בחינת הידע שלכם לגבי גלישה

גלישת טקסט וגלישת רכיבים זהים?

false
true

בנכס overflow מקבלים 2 מילות מפתח. מהו הציר הראשון?

אופקי
לאורך

איזה שטח במודל התיבה צורכים פסי גלילה כאשר הם מוצגים בתוך השורה?

תיבה עם גבול
תיבת שוליים
תיבת תוכן
מרווח פנימי

כדי למשוך תנעה מיותרת מגלילה בגלילה משתמעת מקוננת, באיזה מאפיין להשתמש?

overscroll-effect
overscroll-behavior
scroll-padding
scroll-behavior
scroll-hint

משאבים

Overflow And Data Loss In CSS מ-Smashing Magazine