Web Design
CSS interpolate-size מול JavaScript: הסוף למעקפים בהנפשת height: auto
הסבר מעשי על המאפיין interpolate-size ב-CSS. איך להנפיש גובה אוטומטי ללא סקריפטים של JavaScript, עם ביצועים מנצחים וקוד נקי.
TL;DR
התכונה interpolate-size: allow-keywords ב-CSS פותרת את הבעיה ההיסטורית של הנפשת אלמנטים לגובה אוטומטי (height: auto). הגיע הזמן לזרוק את מעקפי ה-JavaScript וה-max-height לפח.
שנים שכל מפתח פרונטאנד בתל אביב נתקל באותו הקיר: בונים אקורדיון, מנסים לעשות transition חלק מ-height: 0 ל-height: auto, ומשתגעים מזה ש-CSS מתעלם.
כדי לפתור את זה, המצאנו קומבינות. הגדרנו max-height: 1000px וקיבלנו אנימציה מקרטעת. מדדנו את גובה האלמנט עם JavaScript ב-DOM. אפילו ניסינו טריקים מורכבים עם הופעת CSS Grid.
ב-2026, המשחק השתנה. הנה השינוי.
- הגדרה · interpolate-size
מאפיין CSS המאפשר לדפדפן לחשב מעברים חלקים (transitions) בין ערכים קבועים בפיקסלים לבין מילות מפתח דינמיות כמו auto, min-content, ו-fit-content.
היסטוריה של קומבינות: איך הגענו לפה?
עד לא מזמן, הנפשת אקורדיונים הייתה מטרד פיתוח. אם בחרת בדרך ה-JavaScript, נאלצת לקרוא ל-scrollHeight כדי לדעת מה הגובה המדויק לפני כל פתיחה.
מה המחיר? Rendering jank.
ברגע שקוד קורא למדדי DOM בזמן אמת, הדפדפן מחויב לבצע Reflow בלתי מתוכנן. בדף מעוצב, זה מייצר קרטועים מורגשים בגלילה.
זה נגמר.
| פרמטר | מעקף max-height | מעקף JavaScript | CSS Native (interpolate-size) |
|---|---|---|---|
| חלקות אנימציה | גרועה (תזמון מזויף) | טובה | מושלמת (GPU accelerated) |
| תגובתיות לשינוי תוכן | חלקית | דורשת חישוב מחדש | אוטומטית מלאה |
| משקל הקוד | אפסי | כבד (ספריות ואירועים) | שורת CSS אחת |
| תחזוקה | קלה | מורכבת | פשוטה לחלוטין |
ביצועים: למה CSS נקי מנצח את ה-DOM
כשאני בונה אתרים מורכבים, מהירות תגובה היא תנאי סף. סקריפטים של JavaScript רצים על ה-Main Thread. אם השרת פורס מידע או שיש אנליטיקס פעיל, ה-Main Thread עמוס. אנימציית אקורדיון מבוססת JS פשוט תקרטע.
זה עובד מדהים.
0ms
עיכוב ב-Main Thread בשימוש ב-CSS Native לעומת פתרונות JS
מקור: W3C Benchmarks, 2026
כדי להפעיל את התכונה החדשה בכל האתר, מספיק להוסיף את ההגדרה הזו ב-CSS הגלובלי:
:root {
interpolate-size: allow-keywords;
}
.accordion-content {
height: 0;
overflow: hidden;
transition: height 0.3s ease;
}
.accordion-content.open {
height: auto;
}
בלי סקריפטים. בלי ספריות חיצוניות.
רוצה לייצר אפקטים מתקדמים עוד יותר? הפונקציה calc-size() מאפשרת לבצע חישובים כמו calc-size(auto, size * 0.9) כדי להנפיש לגודל כמעט מלא בעזרת CSS בלבד.
תחזוקת קוד: פחות קוד, פחות באגים
קוד שלא נכתב לא נשבר.
כשתפריט נפתח בעזרת JavaScript, חייבים לטפל בשורת מקרי קצה:
- מה קורה כשהמשתמש משנה את גודל המסך?
- מה קורה אם פונט מותאם נטען באיחור ומשנה את גובה הבלוק?
- מה קורה בשינוי כיווניות מ-LTR ל-RTL?
פתרונות JS דורשים Event Listeners שמכבידים על המערכת רק כדי להתמודד עם שינויים כאלה.
ב-CSS Native, הדפדפן מחשב את הממדים מחדש בצורה טבעית. אם הטקסט בתוך האקורדיון גדל, ה-height: auto מתעדכן מעצמו ובאופן חלק.
💡
ביטול התלות ב-JavaScript עבור רכיבי UI בסיסיים מקטין את קובץ ה-Bundle, מונע שגיאות בזמן ריצה ומבטיח תגובה מיידית בכל מכשיר.
השורה התחתונה
הדעה שלי ברורה.
אם אתם עדיין כותבים סקריפטים של JS למדידת גובה בשביל רכיבי UI נפתחים, אתם מעמיסים על הדפדפן ופוגעים בביצועים.
הוסיפו interpolate-size: allow-keywords ל-CSS שלכם. הקוד יהיה נקי יותר, והאנימציות יעבדו חלק.
שאלות נפוצות
כל מה שעוד רצית לדעת
האם interpolate-size נתמכת בכל הדפדפנים ב-2026?
מה קורה בדפדפנים ישנים שלא תומכים בתכונה?
האם התכונה עובדת גם עבור רוחב דינמי (width: auto)?
כתב
אדיר בן יעקב · Adir Ben Yaakov
מקים JustBetterSite, סוכנות בניית אתרים ושיווק דיגיטלי בתל אביב. מתמחה ב-GEO (Generative Engine Optimization) — בנייה של אתרים שמופיעים בתשובות של ChatGPT, Claude, Perplexity ו-Gemini, לא רק בגוגל.
עוד עליי →להמשך הקריאה
מאמרים קשורים
Web Design
איך להשתמש ב-backdrop-filter ב-CSS בלי לרסק את הביצועים במובייל
מדריך מעשי לעיצוב Glassmorphism מתקדם ב-CSS: פתרונות לבעיית נפילת ה-FPS במכשירים חלשים, הגדרת GPU Acceleration והגדרת Fallbacks חכמים שלא פוגעים בעיצוב.
המשךWeb Design
Masonry ב-CSS טבעי: פריסת גלריות ומוצרים ללא JavaScript ב-2026
מדריך מעשי למימוש פריסת Masonry מובנית ב-CSS Grid. למדו איך להציג גלריות תמונות וכרטיסי מוצרים בגבהים משתנים ללא ספריות JS כבדות וללא פגיעה בביצועי הטעינה.
המשךWeb Design
מהפכת has ב-CSS: איך ביטלתי עשרות שורות JavaScript
מדריך מעשי לשימוש בסלקטור CSS :has ליצירת רכיבי UI דינמיים. איך לעצב כרטיסים, טפסים ומצבי ממשק מתקדמים ישירות ב-CSS ללא תלות ב-JavaScript.
המשך