הגדרות מסך

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

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

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

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

מונטאז' של טלפונים מתקפלים בתצורות שונות.

שני מסכים

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

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

פלחים באזור תצוגה

קיימת תכונה ניסיונית של מדיה שנועדה לזהות אם האתר שלך מוצג במכשיר עם שני מסכים. השם המוצע של תכונת המדיה הוא viewport-segments. יש שתי גרסאות: horizontal-viewport-segments וvertical-viewport-segments.

אם תכונת המדיה horizontal-viewport-segments מדווחת על ערך של 2 ובמסגרת vertical-viewport-segments מדווחת ערך של 1, המשמעות היא שהציר במכשיר פועל מלמעלה למטה, ומפצל את התוכן לשתי חלוניות זו לצד זו.

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1) {
  // Styles for side-by-side screens.
}

אם תכונת המדיה vertical-viewport-segments מדווחת על ערך של 2 ו-horizontal-viewport-segments מדווחת על ערך של 1, הציר פועל מצד לצד ומחלק את התוכן לשתי לוחות, אחת מעל השנייה.

@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 1) {
  // Styles for stacked screens.
}
תרשים שמוצגים בו פלחים של אזור תצוגה.
התרשים מ-Microsoft Edge Explainers.

אם גם vertical-viewport-segments וגם horizontal-viewport-segments מדווחים על ערך של 1, פירוש הדבר שהאתר מוצג במסך אחד בלבד, גם אם במכשיר יש יותר ממסך אחד. הדבר מקביל לאי-שימוש בשאילתת מדיה כלשהי.

משתני סביבה

תכונת המדיה viewport-segments כשלעצמה לא תעזור לך לעצב את סביב הציר המעצבן הזה. צריך דרך לדעת את גודל הציר. משתני סביבה יכולים לעזור במצב הזה.

משתני סביבה ב-CSS מאפשרים לכם לשקלל פריצות מביכות למכשירים בסגנונות שלכם. לדוגמה, אפשר לעצב סביב ה-"notch" ב-iPhone X בעזרת ערכי הסביבה safe-area-inset-top, safe-area-inset-right, safe-area-inset-bottom ו-safe-area-inset-left. מילות המפתח האלה נמצאות בתוך פונקציית env().

body {
  padding-top: env(safe-area-inset-top);
  padding-right: env(safe-area-inset-right);
  padding-bottom: env(safe-area-inset-bottom);
  padding-left: env(safe-area-inset-left);
}

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

body {
  padding-top: env(safe-area-inset-top, 1em);
  padding-right: env(safe-area-inset-right, 1em);
  padding-bottom: env(safe-area-inset-bottom, 1em);
  padding-left: env(safe-area-inset-left, 1em);
}

כדי שמשתני הסביבה האלה יפעלו ב-iPhone X, צריך לעדכן את הרכיב meta שמציין את הפרטים של viewport:

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">

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

עבור מסכים מתקפלים, מוצעים שישה משתני סביבה חדשים: viewport-segment-width, viewport-segment-height, viewport-segment-top, viewport-segment-left, viewport-segment-bottom, viewport-segment-right.

תרשים שמוצגים בו משתני סביבה לשני מסכים.
התרשים מ-Microsoft Edge Explainers.

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

@media (min-width: 45em) {
  main {
    display: flex;
    flex-direction: row;
  }
  main article {
    flex: 2;
  }
  main aside {
    flex: 1;
  }
}

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

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

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1) {
  main article {
    flex: 1 1 env(viewport-segment-width 0 0);
  }
  main aside {
    flex: 1;
  }
}

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

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

תרשים שממחיש שירות מיקום שמפוצל על פני שני מסכים, עם המפה במסך אחד ומסלול במסך השני.
תרשים מתוך Microsoft Edge Explainers.

העתיד

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

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

בדיקת ההבנה

בחינת הידע שלכם לגבי הגדרות מסך

איזו שאילתת מדיה ממוקדת למכשיר מתקפל בפריסה לרוחב מפוצלת?

@media (horizontal-viewport-segments: 2) and (vertical-viewport-segments: 1)
מסך שהוגדר עם 2 עמודות ושורה אחת, בחלוקה לרוחב.
@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 1)
שתי שורות ועמודה אחת, לאורך מפוצל.
@media (vertical-viewport-segments: 2) and (horizontal-viewport-segments: 2)
שתי שורות ו-2 עמודות, בחלוקה ל-4 דרכים.
@media (vertical-viewport-segments: 1) and (horizontal-viewport-segments: 1)
תא יחיד, ללא פיצולים.

מהם משתני סביבה? דוגמה env(safe-area-inset-top)

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