תאריך פרסום: 28 בפברואר 2025
"מקצה לקצה" היא תכונה של Android שמאפשרת לאפליקציות להתפרס על כל הרוחב והגובה של המסך על ידי רינדור מאחורי סרגלי המידע של Android.
בגרסאות ישנות יותר מ-Chrome 135, דפדפן Chrome ב-Android לא הציג תוכן מקצה לקצה. במדריך הזה מוסבר איך השינוי הזה משפיע על אתרים ומה אתם כמפתחים יכולים לעשות כדי להתכונן לשינוי.
ברים בכל מקום
מערכת Android כוללת סרגלי מידע שמסופקים על ידי מערכת ההפעלה עצמה.
שורת הסטטוס, שורת הכותרת וסרגל הניווט נקראים יחד סרגלי המידע. הם מציגים מידע חשוב כמו רמת הטעינה, השעה וההתראות, ומאפשרים אינטראקציה ישירה עם המכשיר מכל מקום.
בחלק העליון של המסך נמצאת שורת הסטטוס, שכוללת סמלי התראות וסמלי מערכת.
בתחתית המסך נמצא סרגל הניווט, שמאפשר לשלוט בניווט באמצעות פקדי החזרה, דף הבית וסקירת החלונות. זה יכול להיות הניווט הקלאסי באמצעות שלושה כפתורים או סרגל הניווט המודרני באמצעות תנועות.
בנוסף לסרגלי המידע של Android, ב-Chrome עצמו יש סרגל כתובות שמתרחב ומתכווץ באופן דינמי כשגוללים.
Chrome מקצה לקצה
כשאתם נכנסים לאתר, הוא מוצג במלבן שנקרא אזור התצוגה (פריסה).
ב-Chrome ב-Android, לפני גרסה 135 של Chrome, אזור התצוגה של הפריסה משורטט בין שורת הסטטוס העליונה לבין סרגל הניווט באמצעות תנועות בתחתית המסך. הנוכחות של סרגל הכתובות של Chrome (או היעדרו) יכולה להשפיע על גודל אזור התצוגה, אבל אזור התצוגה אף פעם לא יתרחב לסרגל המידע העליון או לסרגל הניווט התחתון באמצעות תנועות.
החל מגרסה 135 של Chrome, אזור התצוגה יכול להתרחב לסרגל הניווט באמצעות תנועות ב-Android. ההתנהגות הזו מתוארת כמקצה לקצה.
ההתנהגות של Chrome בלי תצוגה מקצה לקצה
בסרטון הבא מוצג Chrome ב-Android ללא תמיכה בתצוגה מקצה לקצה. סרגל הכתובות של Chrome (בחלק העליון) זז באופן דינמי כשגוללים בדף. עם זאת, שורת הסטטוס העליונה של Android וסרגל הניווט של Android בתחתית המסך נשארים קבועים במקומם.
כאן, הגודל של אזור התצוגה של הפריסה משתנה כשסרגל הכתובות של Chrome מתכווץ או מתרחב.
ההתנהגות של Chrome בתצוגה מקצה לקצה
החל מגרסה 135 של Chrome, הדפדפן יכול להציג תוכן מהאינטרנט עד לקצה התחתון של המכשיר על ידי הרחבת אזור התצוגה לאזור של סרגל הניווט באמצעות תנועות.
מסך דינמי מקצה לקצה עם "הסנטר"
כברירת מחדל, ב-Chrome מקצה לקצה מוצג סרגל תחתון דינמי חדש שנקרא "הסנטר" מעל אזור סרגל הניווט באמצעות תנועות. בדיוק כמו סרגל הכתובות של Chrome, גם החלק התחתון הזה זז כשמתחילים לגלול ומשפיע על הגודל של אזור התצוגה.
בהקלטה הבאה של Chrome ב-Android עם תמיכה מקצה לקצה, גם סרגל הכתובות של Chrome וגם החלק התחתון של המסך מתכווצים באופן דינמי כשגוללים למטה בדף. כך אזור התצוגה מתרחב, ואפשר להציג תוכן מהאינטרנט עד לקצה התחתון של המכשיר.
ההתנהגות הזו של החלק התחתון היא התנהגות ברירת המחדל החדשה של Chrome החל מגרסה 135.
מעבר לתצוגה מקצה לקצה כברירת מחדל עם אפשרות להצטרף
אתרים שנבנו לתצוגה מקצה לקצה יכולים לציין זאת על ידי שינוי המטא תג viewport. כשההגדרה מופעלת, אזור התצוגה יורחב עד לקצה התחתון כברירת מחדל, בלי שהסנטר יוצג.
דף יכול לציין שהוא תומך בפריסה מקצה לקצה באמצעות המטא תג viewport והמפתח viewport-fit שלו.
כדי להביע הסכמה לתצוגה מקצה לקצה, צריך להגדיר את viewport-fit לערך של cover.
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
מידע נוסף על הערכים השונים של viewport-fit ב-MDN.
איך להתמודד עם תוכן שסרגל הניווט באמצעות תנועות עלול להסתיר
במצב מקצה לקצה, חשוב לשים לב לתוכן שעלול להיות מוסתר על ידי סרגל הניווט באמצעות תנועות.
ברוב המקרים לא תצטרכו לעשות כלום, כי החלק התחתון של המסך זז מעצמו. המשתמשים עדיין יכולים לגשת לכל התוכן באתר כמו קודם.
עם זאת, אם אתם בוחרים להציג את האפליקציה מקצה לקצה כברירת מחדל, או אם יש לכם רכיב שממוקם בתחתית אזור התצוגה, יכול להיות שתצטרכו להביא בחשבון שהתוכן הזה עלול להיות מוסתר.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: 0;
}
כשהסרגל התחתון מוצג, המשתמשים יכולים לגשת לתוכן, אבל כשהוא נעלם, סרגל הניווט של Android מסתיר את התוכן.
כדי לפתור את הבעיה, אפשר להשתמש ברכיבי ה-inset של האזור הבטוח כדי למקם תמיד את הרכיבים המושפעים מעל סרגל הניווט המקורי של Android בתנועות בתחתית המסך, או כדי להרחיב את הרקע שלהם לאזור הזה.
האזורים הבטוחים
האזור הבטוח מוגדר על ידי ארבעה משתני סביבה שיוצרים מלבן לפי המרחק של החלק העליון, הימני, התחתון והשמאלי שלו מקצה אזור התצוגה.
ארבעת הערכים האלה יוצרים יחד את המלבן של האזור הבטוח, שבו אפשר להציב תוכן בלי שהוא יוסתר על ידי דברים כמו סרגל הניווט באמצעות תנועות ב-Android.
שימוש בתוספת התחתונה של האזור הבטוח
לרכיבים שממוקמים בתחתית אזור התצוגה, צריך להשתמש ב-safe-area-inset-bottom כערך של המאפיין bottom כדי למנוע את המיקום שלו מתחת לסרגל הניווט באמצעות תנועות. הערך שמוחזר על ידי safe-area-inset-bottom מתעדכן באופן דינמי כשהסרגל התחתון זז, וכך האלמנטים שממוקמים בתחתית נשארים מעל סרגל הניווט באמצעות תנועות ב-Android.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: env(safe-area-inset-bottom, 0px);
}
bottom. כשהסרגל התחתון גלוי, הוא מופיע מעל סרגל הניווט באמצעות תנועות של Android. כשהסנטר נעלם, הרכיב נמצא גם מעליו.כמו שאפשר לראות באיורים, התוצאה עדיין לא מושלמת: כשמזיזים את הסנטר, שאר התוכן של הדף מופיע באזור של סרגל הניווט באמצעות תנועות. הסיבה לכך היא שבמצב הזה אזור התצוגה מתרחב לאזור של סרגל הניווט באמצעות תנועות.
כדי למנוע הצגה של תוכן מתחת לתוכן שמעוגן לתחתית המסך, גישה נפוצה היא להגדיר את padding-bottom ל-safe-area-inset-bottom. כך הרכיב שמעוגן לתחתית המסך גדל באופן אוטומטי כשהחלק התחתון של המסך מוסתר. הגישה הזו אמנם עובדת, אבל היא לא מומלצת כי היא גורמת לשינויים תכופים בפריסה בזמן שהסנטר זז.
אל תגדירו את padding לערך safe-area-inset.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: 0;
padding-bottom: env(safe-area-inset-bottom, 0px); /* 🛑 Don't do this, as it causes layout thrashing. */
}
שימוש ב-safe area bottom inset וב-safe area bottom maximum inset
במקום זאת, הגישה המומלצת היא להשתמש בשילוב של safe-area-inset-bottom ו-safe-area-max-inset-bottom. בניגוד ל-safe-area-inset-bottom הדינמי שמתעדכן באופן דינמי כשהסנטר זז, safe-area-max-inset-bottom מייצג את הערך המקסימלי של safe-area-inset-bottom.
משתמשים ב-safe-area-max-inset-bottom כדי להגדיל את הרכיב שמעוגן לתחתית המסך, ומשלבים אותו עם safe-area-inset-bottom כדי למשוך את הרכיב למטה כך שהוא יישב מאחורי הסנטר.
משתמשים ב-safe-area-max-inset-bottom בשילוב עם safe-area-inset-bottom
:root {
--safe-area-max-inset-bottom: env(safe-area-max-inset-bottom, 36px);
--bottom-bar-height: 50px;
}
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: 0;
height: var(--bottom-bar-height);
padding-bottom: var(--safe-area-max-inset-bottom);
bottom: calc(env(safe-area-inset-bottom, 0px) - var(--safe-area-max-inset-bottom));
}
body {
padding-bottom: calc(var(--bottom-bar-height) + var(--safe-area-max-inset-bottom));
}
התוצאה הוויזואלית זהה לגישה של padding-bottom: env(safe-area-inset-bottom, 0px);, אבל הביצועים הרבה יותר טובים. מכיוון שרק הערך המחושב של bottom צריך להשתנות כשהסנטר מתרחק, לא מתרחשת פגיעה בפריסה.
איך מנסים את התכונה "מקצה לקצה" לפני גרסה 135 של Chrome
כדי לנסות את התצוגה מקצה לקצה לפני שהיא תושק לציבור הרחב, צריך להפעיל כמה feature flags של Chrome דרך chrome://flags:
EdgeToEdgeBottomChin(אם מגדירים את האפשרות "Enabled Debug", חצי מהחלק התחתון של המסך ייצבע בוורוד כדי להבדיל אותו בצורה ברורה יותר משאר ממשק המשתמש)DrawCutOutEdgeToEdgeBottomBrowserControlsRefactor(אל תגדירו את האפשרות "מופעל", אלא את האפשרות "מופעל Dispatch yOffset")DynamicSafeAreaInsetsDynamicSafeAreaInsetsOnScrollEdgeToEdgeWebOptInDrawKeyNativeEdgeToEdgeEdgeToEdgeSafeAreaConstraint(אל תגדירו את האפשרות "מופעל", אלא את האפשרות "גרסה מופעלת עם גלילה")
מוודאים שהדגלים הבאים לא מופעלים:
DrawNativeEdgeToEdgeEdgeToEdgeEverywhere
מפעילים מחדש את Chrome פעמיים.
נשמח לקבל ממך משוב.
אם יש לכם משוב על Chrome ועל ההטמעה של התצוגה מקצה לקצה, אתם יכולים לדווח על באג ב-Chromium ברכיב "UI > Browser > Mobile > EdgeToEdge". תודה על המשוב.