שאילתות בקונטיינרים מציעות גישה דינמית וגמישה מאוד לעיצוב רספונסיבי. שאילתות קונטיינר משתמשות בכלל @container
. הפעולה הזו פועלת באופן דומה לשאילתת מדיה עם @media
, אבל במקום זאת, @container
שולחת שאילתה לקונטיינר הורה כדי לקבל את פרטי הסגנון, ולא את אזור התצוגה וסוכן המשתמש.
שאילתות לגבי מאגר תגים הן חלק מהבסיס החדש זמין.
בתגובה לגודל הקונטיינר, שאילתות הקונטיינר מאפשרות לרכיבים להתאים את עצמם למיקום שלהם בממשק. לדוגמה, אפשר לשנות את הגודל והסגנונות של רכיב מסוים בהתאם למאגר שבו הוא מוצב, בין אם מדובר בסרגל צד, בקטע ראשי או בתצוגת רשת בתוך התוכן הראשי בדף.
כפי שמתואר באיור הבא, אפשר לשלב שאילתות מדיה לפריסות מאקרו, שאילתות קונטיינרים לפריסות מיקרו ושאילתות מדיה שמבוססות על העדפה למשתמש, כדי ליצור מערכת עיצוב רספונסיבית מתקדמת. קרא מידע נוסף על שאילתות בקונטיינרים ועל העיצוב החדש והרספונסיבי.
![תמונה שמראה איך סוגים שונים של סגנון פועלים יחד.](https://developer.chrome.com/static/blog/css-ui-ecommerce-cq/image/new-responsive.png?authuser=5&hl=he)
המאמר הוא חלק מסדרה שעוסקת באופן שבו חברות מסחר אלקטרוני שיפרו את האתרים שלהן באמצעות תכונות חדשות ב-CSS ובממשק המשתמש. הפעם אנחנו מסבירים בפירוט איך חברות מסוימות השתמשו בשאילתות קונטיינרים כדי להפיק מהן תועלת.
redBus
RedBus מתחזקת ומציגות קודים שונים לגרסאות שלה לנייד ולמחשב. אחרי הטמעת שאילתות של קונטיינרים בדפי Things-to-to ומטען, החברה הצליחה לאחד את הקוד ל-codebase אחד עבור האתרים האלה. כך הם יכלו להגיב במהירות ולחסוך זמן פיתוח. הדוגמה הבאה ממחישה זאת באמצעות דף המטען:
קוד
בדוגמה הבאה, .bpdpCardWrapper
הוא מאגר ההורה, שנקרא bpdpSection
.
אם למאגר bpdpSection
יש רוחב מינימלי של 744 פיקסלים, הערכים font-size
ו-line-height
של הרכיבים שנבחרו על ידי .bpdpCardContainer
ו-.subTxt, .bpdpAddress
מתעדכנים.
//Code for Container Queries
.bpdpCardWrapper {
container-type: inline-size;
container-name: bpdpSection;
}
@container bpdpSection (min-width: 744px){
.bpdpCardContainer{
font-size: 1rem;
line-height: 1.5rem;
}
.subTxt, .bpdpAddress{
font-size: 0.875rem;
line-height: 1.25rem;
}
}
השפעה
לפני (מספר בסיס קוד) | אחרי (בסיס קוד יחיד) | |
---|---|---|
תשתית | תשתית נפרדת (עלות גבוהה). | אותה תשתית (עלויות מופחתות). |
עיצוב | ממשק משתמש נפרד אבל עקביות נמוכה. | קשה לפתור את הבעיה, אבל הדבר אפשרי. |
ביצועים | קל לטפל בזה כי המערכת נפרדת, אבל יש גם מאמץ כפול לשיפור הביצועים. | זהו דף ספציפי לתכונה, אבל הציון של PageSpeedInsights ב-redBus הוא מעל 80. |
פיתוח | צוותי מפתחים נפרדים. | ירידה של 30% עד 40% בזמן. |
טוקופדיה
דפי פרטי המוצר (PDP) של Tokopedia כוללים מספר כרטיסיות עם מידע על החנות ועל המוצרים. בעבר, פריסת הדף חולקה לשלוש עמודות, ולפעמים שם המוצר בצד ימין נחתך למסכים קטנים יותר (עיינו בסרטון 'לפני' הבא).
כדי לפתור את בעיית הפריסה הזו, הם משתמשים בקלות ובמהירות בשאילתות של קונטיינרים. אחרי ההטמעה, הם יכלו לקבל פריסה גמישה שבה שם המוצר תמיד היה גלוי במלואו (לצפייה בסרטון "אחרי").
לפני
אחרי
קוד
הקוד הבא שולח שאילתה לגבי הגודל של מאגר ההורה בשם infowrapper
.
אם הרוחב המקסימלי של infowrapper
הוא 360 פיקסלים, ערכי width
, margin,
ו-padding
של רכיבי הצאצא מותאמים.
אם המדיניות container-type
מוגדרת כ-inline-size
, הפונקציה הזו שולחת שאילתה על גודל ההנחיה המובנית של ההורה. בשפות לטיניות כמו אנגלית, זה יהיה הרוחב של מאגר ההורה, כי הטקסט עובר ברצף משמאל לימין.
export const styCredibilityContainer = css`
container-name: infowrapper;
container-type: inline-size;
`;
export const styBtnShopFollow = css`
margin-left: auto;
width: 98px;
@container infowrapper (max-width: 360px) {
width: 100%;
margin-top: 2px;
margin-bottom: 8px;
padding-left: 60px;
}
`;
export const styBottomRow = css`
margin-top: 4px;
padding-left: 60px;
display: flex;
align-items: center;
@container infowrapper (max-width: 360px) {
padding-left: 0px;
}
> div {
text-align: left;
margin-top: 0 !important;
}
`;
דברים שחשוב לזכור כשמשתמשים בשאילתות של קונטיינרים
Tokopedia מצאה את התרחיש לדוגמה, וחיפשה שלוש נקודות טקסט באתר שלה. זו המשמעות של קונטיינרים שעשויים להיות קטנים מדי וכתוצאה מכך התוכן נקטע עבור המשתמש.
עוד תרחיש טוב לשאילתות של קונטיינרים באתרי מסחר אלקטרוני הוא לחפש רכיבים בשימוש חוזר. לדוגמה, ייתכן שהלחצן Add tocart יוצג באופן שונה בהתאם למאגר ההורה (לדוגמה, רק הסמל אם הוא נמצא בכרטיס המוצר, והסמל עם טקסט אם זו קריאה לפעולה ראשית בדף). הלחצן יכול להיות מועמד טוב לשאילתות של קונטיינרים.
אפשר לבצע שיפורים מצטברים באתר. לדוגמה, אפשר להתחיל בתרחישים קטנים יותר כמו דוגמה לאליפסה מ-Tokopedia, ולהטמיע שם שאילתות של קונטיינרים. לאחר מכן, חפשו בהדרגה בקשות תמיכה ושפרו את ה-CSS.
מקורות מידע:
- שאילתות בקונטיינרים מגיעות לדפדפנים יציבים
- עיצוב שאילתות בקונטיינר בדפדפן
- הדגמות של שאילתות בקונטיינר
- הדגמה: כרטיסי שאילתות של מאגרים
- סרטון: מה חדש בממשק המשתמש באינטרנט – I/O 2023
- רוצה לדווח על באג או לבקש תכונה חדשה? אנחנו רוצים לשמוע ממך.
קוראים את המאמרים האחרים בסדרה הזו, שבהם מוסבר איך חברות מסחר אלקטרוני נהנו מהשימוש ב-CSS ובתכונות חדשות של ממשק המשתמש, כמו אנימציות שמבוססות על גלילה, חלון קופץ, שאילתות בקונטיינרים והבורר has()
.