diff --git a/mobile/mobile-form-patterns.md b/mobile/mobile-form-patterns.md new file mode 100644 index 0000000..659e8d7 --- /dev/null +++ b/mobile/mobile-form-patterns.md @@ -0,0 +1,422 @@ +--- +title: Mobile Form Patterns +created: 2026-07-03 +updated: 2026-07-03 +type: system +tags: [mobile, forms, input, validation, UX, conversion] +sources: + - https://www.formCreatorai.com/mobile-form-design-patterns-maximize-completion + - https://subux.pro/guides/article/input-field-types-and-usage + - https://askusers.org/en/blog/mobile-form-optimization-completion-rates + - https://www.getworkform.com/blog/mobile-form-design-tips + - https://tinyform.com/post/mobile-form-statistics-ux-trends + - https://www.reform.app/blog/10-mobile-form-design-tips-for-better-ux +confidence: high +--- + +# Mobile Form Patterns — Формы и инпуты для мобильных + +## 1. Mobile Form Statistics + +- **63%** мобильных форм бросают на полпути (мобильная форма для завершения) +- Оптимизированные формы увеличивают completion rate до **43%** +- Мобильные формы имеют более высокий abandonment rate, чем десктоп +- Каждый дополнительный field = 10% снижение completion rate + +## 2. Input Types & Keyboards + +### 2.1 Correct Input Types + +```html + + + + + + + + + + + + + + + + + + + + +``` + +### 2.2 inputmode for Custom Keyboards + +```html + + + + + + + + + + + + + + +``` + +### 2.3 Keyboard Hints + +```html + + + + + + + + + + +``` + +## 3. Form Layout Patterns + +### 3.1 Single-Column Form + +```css +.mobile-form { + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px 16px; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 8px; +} +``` + +### 3.2 Floating Label Pattern + +```css +.form-group { + position: relative; +} + +.form-input { + min-height: 48px; + padding: 16px 12px 8px; + border: 1px solid var(--border-1); + border-radius: 8px; + background: var(--surface-1); + font-size: 16px; /* Prevents iOS zoom */ + width: 100%; + transition: border-color 0.15s, box-shadow 0.15s; +} + +.form-input:focus { + border-color: var(--primary); + outline: none; + box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 20%, transparent); +} + +.form-label { + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + color: var(--text-secondary); + pointer-events: none; + transition: all 0.15s ease; + font-size: 16px; +} + +.form-input:focus ~ .form-label, +.form-input:not(:placeholder-shown) ~ .form-label { + top: 8px; + font-size: 12px; + color: var(--primary); +} +``` + +### 3.3 Multi-Field Row (When Appropriate) + +```css +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; +} + +.form-row-3 { + grid-template-columns: 1fr 1fr 1fr; +} +``` + +**Правила:** +- Только для связанных полей (имя/отчество, город/индекс) +- Всегда single-column на экранах < 360px +- Never for unrelated fields + +## 4. Validation Patterns + +### 4.1 Real-Time Validation + +```css +.form-input.valid { + border-color: #22c55e; +} + +.form-input.invalid { + border-color: #ef4444; + animation: shake 0.3s ease; +} + +.form-error { + font-size: 12px; + color: #ef4444; + margin-top: 4px; + display: flex; + align-items: center; + gap: 4px; +} + +.form-success { + font-size: 12px; + color: #22c55e; + margin-top: 4px; +} + +@keyframes shake { + 0%, 100% { transform: translateX(0); } + 25% { transform: translateX(-4px); } + 75% { transform: translateX(4px); } +} +``` + +### 4.2 Inline Validation on Blur + +```javascript +// Validate on blur, not on every keystroke +input.addEventListener('blur', () => { + const value = input.value; + if (!validate(value)) { + input.classList.add('invalid'); + showError(input, getMessage(value)); + } else { + input.classList.remove('invalid'); + input.classList.add('valid'); + showSuccess(input); + } +}); +``` + +### 4.3 Validation Error Summary + +```html + +
Исправьте следующие ошибки:
+ +Подзаголовок в 1-2 предложения, объясняющий ценность
+ + +Мгновенные дашборды с ключевыми метриками
+Загрузка менее чем за 1 секунду
+Шифрование данных и соответствие GDPR
+Никаких сложных настроек. Подключите API и начните работу.
+ Документация → +
+
+ Присоединяйтесь к 10,000+ компаний, которые уже используют наш сервис
+Запросите демо за 2 минуты
+ Запросить демо +"Этот сервис изменил наш подход к аналитике. Всё работает как часы."
+ +"Наконец-то удобный интерфейс, который не ломается на телефоне."
+ +Регистрация занимает 2 минуты. Просто укажите email, создайте пароль и следуйте инструкциям на экране.
+Да, вы можете отменить подписку в любой момент из настроек аккаунта. Никаких скрытых платежей.
+Да, 14 дней бесплатного использования всех функций. Без привязки карты.
+
+
+
+