Web Design
למה 100vh הורס לכם את אתר המובייל ב-2026 (ואיך dvh פותר את זה)
סובלים מריצודים ותזוזות מסך באייפון? גלו את 5 הטעויות הנפוצות בשימוש ביחידות גובה ב-CSS, ואיך dvh, svh ו-lvh פותרים את הבעיה במינימום קוד.
TL;DR
הגדרת גובה של 100vh בקוד CSS גורמת לריצודים, חיתוך כפתורים ותזוזות מסך ב-iOS Safari ו-Chrome למובייל. ב-2026, היחידות החדשות dvh, svh ו-lvh פותרות את הבעיה הזו לחלוטין.
בשנה האחרונה עברתי על עשרות אתרים של עסקים וחברות בתל אביב. ראיתי שוב ושוב את אותן 5 טעויות CSS בפיתוח למובייל — טעויות שגורמות למסך לקפוץ, לכפתורים להיעלם ולגולשים לנטוש.
הסיפור תמיד מתחיל באותה דרך: מעצב בונה מסך Hero מרשים, המפתח כותב height: 100vh, ועל מסך המחשב הכל נראה מדהים. אבל כשהלקוח פותח את האתר באייפון ברחוב דיזנגוף, כפתור ההנעה לפעולה נעלם מתחת לסרגל הכתובות של Safari. הגולש מנסה לגולל, המסך מקפץ, וההמרה נזרקת לפח.
הנה 5 הטעויות הנפוצות ביותר שפוגשות אותי בשטח — ואיך לתקן אותן ברגע.
- הגדרה · Dynamic Viewport Units
יחידות מידה ב-CSS (כמו dvh, svh, lvh) המותאמות דינמית לגובה המסך האמיתי במכשירים ניידים, תוך התחשבות בהופעה או היעלמות של סרגלי הדפדפן.
טעות #1: להסתמך על 100vh בשביל מסך ה-Hero במובייל
היחידה vh (Viewport Height) הומצאה בימים שבהם גלשנו רק במחשבים שולחניים. במחשב, גובה המסך קבוע. בסמארטפון, סרגל הכתובות העליון והתחתון של Safari או Chrome מופיעים ונעלמים תוך כדי גלילה.
כאשר מפתחים כותבים height: 100vh, הדפדפן מחשב את הגובה כאילו סרגל הכתובות אינו קיים. התוצאה? החלק התחתון של המסך נחתך.
💡
100vh במובייל לא שווה ל-100% מגובה המסך הגלוי. הוא תמיד גבוה יותר, ודוחק כפתורים קריטיים אל מתחת למסך.
איך מתקנים?
החליפו את 100vh ב-100dvh (Dynamic Viewport Height). יחידה זו מתאימה את עצמה בזמן אמת לגובה הגלוי של המסך.
.hero {
/* Fallback לדפדפנים ישנים */
height: 100vh;
/* הפתרון המודרני */
height: 100dvh;
}
טעות #2: בחירה שגויה בין svh, lvh ו-dvh
הרבה מפתחים שומעים על יחידות ה-Viewport החדשות ומחליפים באופן עיוור את כל ה-vh בפרויקט ל-dvh. זו שגיאה.
קיימות שלוש יחידות שונות, ולכל אחת תפקיד מוגדר:
| יחידה | שם מלא | התנהגות במובייל | מתי להשתמש? |
|---|---|---|---|
| svh | Small Viewport Height | הגובה הקטן ביותר (כשסרגל הדפדפן פתוח) | חלונות קופצים (Modals), תפריטי מובייל |
| lvh | Large Viewport Height | הגובה הגדול ביותר (כשסרגל הדפדפן מוסתר) | רקעים מלאים, חשיפת אלמנטים בגלילה |
| dvh | Dynamic Viewport Height | גובה דינמי שמשתנה בזמן אמת לפי גלילה | מסכי Hero ראשיים בלבד |
אם תגדירו תפריט קופץ (Modal) עם 100dvh, בכל פעם שהמשתמש יזיז מעט את האצבע, התפריט ישנה את גובהו ויצור תחושת ריצוד מרגיזה.
אל תשתמשו ב-dvh עבור אלמנטים יציבים כמו Modals או Sticky Headers. בשבילם המציאו את svh.
טעות #3: יצירת תזוזות תוכן (CLS) בגלל שינויי גובה תכופים
תזוזות תוכן בלתי צפויות (Cumulative Layout Shift) הן סיוט למשתמשים ולמנועי חיפוש כאחד.
כשמשתמשים ב-dvh על אלמנטים פנימיים בתוך הדף (כמו קלפים, טבלאות או תמונות), כל גלילה קטנה גורמת לשרשרת של חישובים מחדש (Reflow) בדפדפן. הטלפון מתחיל להתחמם, הניווט מגמגם והרנדור נהיה איטי.
0.3s
עיכוב ממוצע ברנדור הנגרם מחישובי Layout מיותרים במכשירים חלשים
מקור: Google Web Vitals, 2026
איך מתקנים?
השתמשו ב-dvh רק באלמנט העטיפה הראשי (Main Container) או במסך הפתיחה. עבור תוכן פנימי, השתמשו באחוזים (100%) או ב-svh.
טעות #4: התעלמות מדפדפנים בתוך אפליקציות (In-App Browsers)
פתחתם קישור מתוך אינסטגרם, טיקטוק או לינקדאין? מזל טוב, אתם גולשים בתוך WebView.
הדפדפנים הפנימיים של האפליקציות האלה ידועים בהתנהגות בלתי צפויה. חלקם אינם מעדכנים את יחידות ה-dvh בצורה חלקה, וחלקם מציגים סרגלים עליונים שאינם נעלמים לעולם.
/* הטריק של המקצוענים למניעת בעיות ב-WebView */
.full-screen-element {
min-height: 100vh;
min-height: 100svh;
}
שימוש ב-min-height במקום height מונע מהתוכן להיחתך אם הסרגל הפנימי של האפליקציה תופס מקום גדול מהצפוי.
טעות #5: שכפול קוד מיותר בלי קסקייד נכון
ראיתי מפתחים שכותבים מנגנוני JavaScript מורכבים שמחשבים את window.innerHeight ומעדכנים משתנה CSS ב-Resize.
ב-2026, סקריפטים כאלה הם מיותרים לחלוטין ופוגעים בביצועים. CSS נייטיב יודע לעשות את זה טוב יותר, מהר יותר ובלי ללחוץ על ה-CPU של הנייד.
מחקו סקריפטים ישנים שמחשבים גובה חלון ב-JS. הדפדפן המודרני מטפל בזה ברמת ה-Rendering Engine.
השורה התחתונה: ההמלצה האחת שלי
אם יש דבר אחד שכדאי לקחת מהמאמר הזה לפרויקט הבא שלכם: עברו ל-dvh במסכי Hero ו-svh במודאלים.
💡
פשטות מנצחת: שורת CSS אחת של 100dvh מחליפה 30 שורות של JavaScript ישן ומבטיחה שהכפתור שלכם לא ייעלם לעולם באייפון.
שאלות נפוצות
כל מה שעוד רצית לדעת
מה ההבדל העיקרי בין svh ל-dvh?
האם כל הדפדפנים ב-2026 תומכים ביחידות dvh ו-svh?
מתי עדיף להשתמש ב-svh ולא ב-dvh?
כתב
אדיר בן יעקב · 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
CSS interpolate-size מול JavaScript: הסוף למעקפים בהנפשת height: auto
הסבר מעשי על המאפיין interpolate-size ב-CSS. איך להנפיש גובה אוטומטי ללא סקריפטים של JavaScript, עם ביצועים מנצחים וקוד נקי.
המשךWeb Design
field-sizing: content ב-CSS: שדות טקסט שמתרחבים מעצמם ללא JavaScript
למדו איך להשתמש בתכונה המודרנית field-sizing: content ב-CSS כדי ליצור שדות טקסט וטפסים שמתרחבים אוטומטית לפי הקלדת המשתמש, ללא סקריפטים ובאפס פגיעה בביצועים.
המשך