Web Design
איך למנוע מהמקלדת הווירטואלית במובייל לשבור את ה-UI שלכם ב-2026
מדריך מעשי להתמודדות עם מקלדת וירטואלית במובייל. כך תשתמשו ב-interactive-widget וב-Virtual Keyboard API כדי למנוע טפסים שבורים ואלמנטים קופצים.
TL;DR
פתיחת מקלדת וירטואלית במובייל נוטה לכווץ את המסך ולהקפיץ אלמנטים קבועים. באמצעות תכונת interactive-widget ו-Virtual Keyboard API, אפשר לשלוט בדיוק בהתנהגות הממשק ולמנוע מחיקת טפסים או הסתרת כפתורי שליחה.
טופס ההרשמה שלכם נראה נהדר על המסך. המשתמש לוחץ על שדה האימייל, המקלדת הווירטואלית נפתחת, ופתאום כל העמוד נצבט. הבאנר התחתון קופץ למרכז המסך, כפתור השליחה נעלם, והמשתמש מתוסכל.
זה קורה בגלל ההתנהגות ההיסטורית של דפדפנים בסמארטפונים. הגיע הזמן לסדר את זה.
לפני: טופס קלאסי שנשבר כשפותחים מקלדת
במשך שנים, ברירת המחדל של דפדפנים כמו Chrome או Safari בעת פתיחת מקלדת הייתה פשוטה ואכזרית: כיווץ ה-Viewport.
כשהמקלדת עולה, גובה המסך הזמין פוחת בחצי. אלמנטים בעלי מיקום קבוע (position: fixed) שממוקמים בתחתית המסך מחושבים מחדש. במקום להישאר מוסתרים מתחת למקלדת, הדפדפן דוחף אותם למעלה. הם מתמקמים בדיוק מעל המקלדת וחוסמים את שדות הטופס.
- הגדרה · Visual Viewport vs Layout Viewport
ה-Layout Viewport הוא שטח הקנווס לפיו נתרמים האלמנטים בעמוד. ה-Visual Viewport הוא האזור שעין המשתמש רואה בפועל על המסך הפיזי, בניכוי מקלדות וזום.
דמיינו משתמש בשם אלון שמנסה להזין כתובת למשלוח ברוטשילד. ברגע שהוא נוגע בשדה הטקסט, מקלדת בגובה 300 פיקסלים נפלטת מלמטה. הסטיקי באנר של הצ'אט מוקפץ למרכז המסך ומסתיר את כפתור האישור. אלון לא יכול לראות מה הוא מקליד.
התוצאה: נטישת טופס.
אחרי: ממשק יציב וזורם
כשמגדירים את התנהגות המקלדת בצורה מודרנית, המסך נשאר יציב לחלוטין.
הטופס אינו מתכווץ בצורה מקרית. כפתור השליחה נשאר במיקום הגיוני, והמקלדת עולה מעל התוכן כחכירה נפרדת. אם צריך, המקור מתגלגל מעט למעלה כדי לשמור על השדה המוער בעין, אך כל שאר אלמנטי ה-UI נשארים במקומם הטבעי.
אפס קפיצות. אפס אלמנטים תקועים באמצע המסך.
איך לבצע את המעבר: הגדרת interactive-widget
פתרון הבסיס הנגיש ביותר ב-2026 מגיע ישירות מתג המטא של ה-viewport. אין צורך בספריות JavaScript כבדות.
אנחנו מוסיפים את הפרמטר interactive-widget להגדרת ה-viewport ב-HTML:
<meta name="viewport" content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content">
הפרמטר מקבל שלוש ערכים אפשריים:
resizes-visual: המקלדת משנה רק את ה-Visual Viewport. ה-Layout Viewport נשאר ללא שינוי. אלמנטים קבועים לא קופצים.resizes-content: המקלדת מכווצת את ה-Layout Viewport. זו ברירת המחדל הישנה בחלק מהדפדפנים.overlays-content: המקלדת צפה לחלוטין מעל התוכן מבלי לשנות אף viewport.
100%
תמיכה בדפדפנים מודרניים ב-2026 עבור interactive-widget
מקור: W3C Spec, 2026
בחירה ב-resizes-visual מונעת מיד את קפיצת האלמנטים המודבקים לתחתית.
השלב הבא: שליטה מלאה עם Virtual Keyboard API
לפעמים אנחנו רוצים לדעת בדיוק כמה פיקסלים המקלדת תופסת כדי לרפד את הטופס בצורה דינמית. כאן נכנס לתמונה ה-Virtual Keyboard API.
אני משתמש ב-JavaScript כדי להגדיר לדפדפן שהמקלדת מנהלת את עצמה:
if ('virtualKeyboard' in navigator) {
navigator.virtualKeyboard.overlaysContent = true;
}
ברגע שמפעילים את התכונה הזו, המקלדת מציפה אירוע בכל פעם שהיא נפתחת או נסגרת. בנוסף, הדפדפן מייצר משתני סביבה ב-CSS שדרכם אפשר לקרוא את גובה המקלדת:
.form-container {
padding-bottom: env(keyboard-inset-height, 0px);
}
אם המקלדת פתוחה בגובה 280 פיקסלים, ה-padding התחתון של הטופס יגדל ב-280 פיקסלים. כשהיא נסגרת, הוא חוזר לאפס.
אל תשכחו לספק ערך fallback של 0px בתוך הפונקציה env(), כדי למנוע שגיאות בדפדפנים ישנים או בשולחן עבודה.
סיכום
ממשק מובייל איכותי נמדד ברגעים הקטנים שבהם המשתמש מזין מידע. טיפול נכון במקלדת הווירטואלית מונע תסכול מיותר ומעלה את אחוזי ההמרה בטפסים.
💡
אל תתנו לדפדפן לנחש איך להתמודד עם מקלדת. הגדירו interactive-widget במטא-תג והשתמשו ב-env(keyboard-inset-height) כדי לייצר חוויית גלישה יציבה.
שאלות נפוצות
כל מה שעוד רצית לדעת
מה ההבדל בין resizes-visual ל-overlays-content?
האם Virtual Keyboard API נתמך בכל הדפדפנים ב-2026?
איך מונעים מבאנר תחתון מודבק (fixed) לקפוץ למרכז המסך?
כתב
אדיר בן יעקב · Adir Ben Yaakov
מקים JustBetterSite, סוכנות בניית אתרים ושיווק דיגיטלי בתל אביב. מתמחה ב-GEO (Generative Engine Optimization) — בנייה של אתרים שמופיעים בתשובות של ChatGPT, Claude, Perplexity ו-Gemini, לא רק בגוגל.
עוד עליי →להמשך הקריאה
מאמרים קשורים
Web Design
קרוסלות ב-CSS טבעי בלבד: נפרדים מ-JavaScript עם scroll-marker
נפרדים מספריות JavaScript כבדות לקרוסלות. מדריך פרקטי לבניית גלריות מוצרים קלות, נגישות ומהירות ב-CSS טבעי בלבד עם תכונת scroll-marker.
המשךWeb Design
CSS contrast-color() מול JavaScript: איך לעצב ממשק דינמי ונגיש ב-2026
השוואה מעשית בין פונקציית contrast-color() ב-CSS לבין פתרונות JavaScript ישנים. גלו איך לייצר ניגודיות נגישה ואוטומטית ללא סקריפטים כבדים.
המשךWeb Design
פונקציות ו-Mixins טבעיים ב-CSS: הקץ לעיבוד מקדים ב-2026
מדריך מעשי לשימוש ב-CSS Functions ו-Mixins טבעיים בדפדפן. איך לנהל לוגיקת עיצוב מורכבת בממשקי AI ללא Sass או מעבדים מקדימים.
המשך