- mobile-patterns.md: Mobile layout & pattern systems (18.5KB) Fluid typography, container queries, safe-area, CSS architecture, touch-optimized components, iOS/Android specifics, testing checklist - mobile-layout-patterns.md: Mobile layout systems (11.5KB) CSS grid, single-column stack, full-bleed hero, card stack, swipeable carousel, split-screen, off-canvas nav, bottom sheet, FAB, component patterns - mobile-navigation-patterns.md: Mobile navigation (9.8KB) Bottom tab bar, top nav, hamburger menu, bottom sheet nav, pill nav, comparison matrix, navigation rules, swipe navigation, breadcrumbs, tab content - mobile-form-patterns.md: Mobile form patterns (10.3KB) Input types, keyboards, floating labels, validation patterns, progressive disclosure, autocomplete, masked inputs, toggle/radio, form anti-patterns - mobile-interaction-patterns.md: Touch & gestures (16.7KB) Swipe detection, long press, pull-to-refresh, touch feedback, scroll-reveal, parallax, sticky scroll, CSS scroll animations, touch carousel, haptic feedback, passive listeners - mobile-performance-patterns.md: Performance optimization (12.3KB) Core Web Vitals (LCP/INP/CLS), LCP optimization, INP debugging, CLS prevention, image optimization, lazy loading, service workers, CSS/JS optimization, network optimization - mobile-landing-patterns.md: Landing page patterns (21.3KB) Section sequencing, hero, social proof, feature cards, CTA patterns (inline/sticky/full-bleed), testimonials, pricing, FAQ accordion, footer, mobile checklist
21 KiB
21 KiB
title, created, updated, type, tags, sources, confidence
| title | created | updated | type | tags | sources | confidence | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mobile Landing Page Patterns | 2026-07-03 | 2026-07-03 | system |
|
high |
Mobile Landing Page Patterns — Лендинги для мобильных
1. Mobile Landing Page Structure
1.1 Секвенция секций
Оптимальный порядок для мобильных лендингов (сверху вниз):
1. Hero (с CTA)
2. Social Proof (логотипы клиентов)
3. Problem/Solution
4. Features/Benefits
5. How It Works
6. Testimonials
7. Pricing
8. FAQ
9. Final CTA
10. Footer
1.2 Hero Section (Mobile)
<section class="mobile-hero" style="min-height: 80dvh;">
<div class="container">
<h1 class="hero-title">Заголовок, который решает проблему</h1>
<p class="hero-subtitle">Подзаголовок в 1-2 предложения, объясняющий ценность</p>
<div class="hero-cta-group">
<a href="#signup" class="btn btn-primary">Начать бесплатно</a>
<a href="#demo" class="btn btn-ghost">Смотреть демо ▶</a>
</div>
<div class="hero-social-proof">
<div class="avatars">
<img src="/av1.jpg" alt="" class="avatar">
<img src="/av2.jpg" alt="" class="avatar">
<img src="/av3.jpg" alt="" class="avatar">
</div>
<span class="social-text">+2,000 уже используют</span>
</div>
</div>
</section>
.mobile-hero {
padding: calc(24px + var(--safe-top)) 16px calc(var(--safe-bottom) + 24px);
display: flex;
flex-direction: column;
justify-content: center;
min-height: 80dvh;
}
.hero-title {
font-size: clamp(2rem, 8vw, 3.5rem);
font-weight: 800;
line-height: 1.1;
margin-bottom: 16px;
letter-spacing: -0.03em;
}
.hero-subtitle {
font-size: clamp(1.1rem, 3.5vw, 1.25rem);
line-height: 1.5;
color: var(--text-secondary);
margin-bottom: 24px;
max-width: 600px;
}
.hero-cta-group {
display: flex;
flex-direction: column;
gap: 12px;
margin-bottom: 24px;
}
.hero-social-proof {
display: flex;
align-items: center;
gap: 12px;
}
.avatars {
display: flex;
}
.avatar {
width: 32px;
height: 32px;
border-radius: 50%;
border: 2px solid var(--surface-1);
margin-left: -8px;
}
.avatar:first-child {
margin-left: 0;
}
.social-text {
font-size: var(--text-sm);
color: var(--text-secondary);
}
1.3 Social Proof Section
<section class="social-proof">
<p class="section-label">Нам доверяют</p>
<div class="logo-grid">
<img src="/logo1.svg" alt="Company" class="logo">
<img src="/logo2.svg" alt="Company" class="logo">
<img src="/logo3.svg" alt="Company" class="logo">
<img src="/logo4.svg" alt="Company" class="logo">
<img src="/logo5.svg" alt="Company" class="logo">
</div>
<div class="stats-grid">
<div class="stat">
<span class="stat-value">10K+</span>
<span class="stat-label">Клиентов</span>
</div>
<div class="stat">
<span class="stat-value">99.9%</span>
<span class="stat-label">Uptime</span>
</div>
<div class="stat">
<span class="stat-value">4.9/5</span>
<span class="stat-label">Рейтинг</span>
</div>
</div>
</section>
.social-proof {
padding: 48px 16px;
text-align: center;
}
.section-label {
font-size: var(--text-sm);
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--text-secondary);
margin-bottom: 24px;
}
.logo-grid {
display: flex;
justify-content: center;
align-items: center;
gap: 24px;
flex-wrap: wrap;
margin-bottom: 48px;
}
.logo {
height: 24px;
opacity: 0.5;
filter: grayscale(1);
transition: opacity 0.2s, filter 0.2s;
}
.logo:hover,
.logo:active {
opacity: 1;
filter: grayscale(0);
}
.stats-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
padding: 24px;
background: var(--surface-2);
border-radius: 12px;
}
.stat {
display: flex;
flex-direction: column;
gap: 4px;
}
.stat-value {
font-size: var(--text-xl);
font-weight: 800;
}
.stat-label {
font-size: var(--text-xs);
color: var(--text-secondary);
}
2. Feature/Benefit Sections
2.1 Feature Card (Mobile)
<section class="features">
<h2 class="section-title">Всё что нужно для роста</h2>
<div class="feature-list">
<div class="feature-card">
<div class="feature-icon">📊</div>
<h3 class="feature-title">Аналитика</h3>
<p class="feature-desc">Мгновенные дашборды с ключевыми метриками</p>
</div>
<div class="feature-card">
<div class="feature-icon">⚡</div>
<h3 class="feature-title">Скорость</h3>
<p class="feature-desc">Загрузка менее чем за 1 секунду</p>
</div>
<div class="feature-card">
<div class="feature-icon">🔒</div>
<h3 class="feature-title">Безопасность</h3>
<p class="feature-desc">Шифрование данных и соответствие GDPR</p>
</div>
</div>
</section>
.features {
padding: 48px 16px;
}
.section-title {
font-size: clamp(1.5rem, 6vw, 2.5rem);
font-weight: 800;
text-align: center;
margin-bottom: 32px;
letter-spacing: -0.03em;
}
.feature-list {
display: flex;
flex-direction: column;
gap: 16px;
}
.feature-card {
display: flex;
gap: 16px;
padding: 20px;
background: var(--surface-1);
border: 1px solid var(--border-1);
border-radius: 12px;
transition: border-color 0.2s;
}
.feature-card:active {
border-color: var(--primary);
}
.feature-icon {
font-size: 2rem;
flex-shrink: 0;
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
background: var(--surface-2);
border-radius: 12px;
}
.feature-title {
font-size: var(--text-lg);
font-weight: 700;
margin-bottom: 4px;
}
.feature-desc {
font-size: var(--text-sm);
color: var(--text-secondary);
line-height: 1.5;
}
2.2 Feature Image + Text (Alternating)
<section class="feature-showcase">
<div class="feature-showcase__content">
<h3 class="feature-showcase__title">Быстрый старт за 2 минуты</h3>
<p class="feature-showcase__desc">Никаких сложных настроек. Подключите API и начните работу.</p>
<a href="#docs" class="btn btn-primary">Документация →</a>
</div>
<div class="feature-showcase__media">
<img src="/screenshot1.webp" alt="Dashboard preview" loading="lazy">
</div>
</section>
<section class="feature-showcase reversed">
<div class="feature-showcase__content">
<h3 class="feature-showcase__title">Автоматизация процессов</h3>
<p class="feature-showcase__desc">Настройте один раз — система будет работать за вас.</p>
<a href="#features" class="btn btn-primary">Узнать больше →</a>
</div>
<div class="feature-showcase__media">
<img src="/screenshot2.webp" alt="Automation preview" loading="lazy">
</div>
</section>
.feature-showcase {
display: flex;
flex-direction: column;
padding: 48px 16px;
gap: 32px;
}
.feature-showcase.reversed .feature-showcase__content {
order: 2;
}
.feature-showcase.reversed .feature-showcase__media {
order: 1;
}
.feature-showcase__title {
font-size: var(--text-xl);
font-weight: 700;
margin-bottom: 8px;
}
.feature-showcase__desc {
font-size: var(--text-base);
color: var(--text-secondary);
line-height: 1.5;
margin-bottom: 16px;
}
.feature-showcase__media {
width: 100%;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.feature-showcase__media img {
width: 100%;
aspect-ratio: 4/3;
object-fit: cover;
}
@media (min-width: 768px) {
.feature-showcase {
flex-direction: row;
align-items: center;
gap: 48px;
padding: 64px 32px;
}
.feature-showcase.reversed .feature-showcase__content {
order: 1;
}
.feature-showcase.reversed .feature-showcase__media {
order: 2;
}
.feature-showcase__content {
flex: 1;
}
.feature-showcase__media {
flex: 1;
}
}
3. CTA Patterns for Mobile
3.1 Inline CTA
<div class="cta-inline">
<div class="cta-inline__content">
<h3 class="cta-inline__title">Готовы начать?</h3>
<p class="cta-inline__desc">Присоединяйтесь к 10,000+ компаний, которые уже используют наш сервис</p>
</div>
<a href="#signup" class="btn btn-primary btn-large">Создать аккаунт</a>
</div>
.cta-inline {
padding: 48px 16px;
text-align: center;
background: var(--surface-2);
border-radius: 16px;
margin: 0 16px 32px;
}
.cta-inline__title {
font-size: clamp(1.25rem, 5vw, 1.75rem);
font-weight: 700;
margin-bottom: 8px;
}
.cta-inline__desc {
font-size: var(--text-base);
color: var(--text-secondary);
margin-bottom: 24px;
}
.btn-large {
width: 100%;
min-height: 56px;
font-size: var(--text-lg);
}
3.2 Sticky Bottom CTA
<div class="sticky-cta">
<a href="#signup" class="btn btn-primary sticky-cta__btn">
Начать бесплатно
</a>
<span class="sticky-cta__hint">Без привязки карты</span>
</div>
.sticky-cta {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 12px 16px;
padding-bottom: calc(12px + var(--safe-bottom));
background: var(--surface-1);
border-top: 1px solid var(--border-1);
z-index: 100;
display: flex;
flex-direction: column;
gap: 4px;
box-shadow: 0 -4px 12px rgba(0,0,0,0.08);
}
.sticky-cta__btn {
width: 100%;
min-height: 56px;
text-align: center;
font-size: var(--text-lg);
font-weight: 700;
text-decoration: none;
display: flex;
align-items: center;
justify-content: center;
}
.sticky-cta__hint {
text-align: center;
font-size: var(--text-xs);
color: var(--text-secondary);
}
3.3 Full-Bleed CTA
<section class="cta-full-bleed">
<h2 class="cta-full-bleed__title">Готовы трансформировать бизнес?</h2>
<p class="cta-full-bleed__desc">Запросите демо за 2 минуты</p>
<a href="#demo" class="btn btn-white btn-large">Запросить демо</a>
</section>
.cta-full-bleed {
padding: 64px 24px;
text-align: center;
background: var(--primary);
color: white;
}
.cta-full-bleed__title {
font-size: clamp(1.5rem, 6vw, 2.5rem);
font-weight: 800;
margin-bottom: 12px;
}
.cta-full-bleed__desc {
font-size: var(--text-lg);
opacity: 0.9;
margin-bottom: 32px;
}
.btn-white {
background: white;
color: var(--primary);
}
4. Testimonials for Mobile
<section class="testimonials">
<h2 class="section-title">Что говорят клиенты</h2>
<div class="testimonial-scroll">
<div class="testimonial-card">
<p class="testimonial-text">"Этот сервис изменил наш подход к аналитике. Всё работает как часы."</p>
<div class="testimonial-author">
<img src="/av1.jpg" alt="Иван П." class="testimonial-avatar">
<div>
<p class="testimonial-name">Иван Петров</p>
<p class="testimonial-role">CEO, TechCorp</p>
</div>
</div>
</div>
<div class="testimonial-card">
<p class="testimonial-text">"Наконец-то удобный интерфейс, который не ломается на телефоне."</p>
<div class="testimonial-author">
<img src="/av2.jpg" alt="Анна С." class="testimonial-avatar">
<div>
<p class="testimonial-name">Анна Сидорова</p>
<p class="testimonial-role">CMO, Digital Agency</p>
</div>
</div>
</div>
</div>
</section>
.testimonial-scroll {
display: flex;
gap: 16px;
overflow-x: auto;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
padding: 0 16px 16px;
scrollbar-width: none;
}
.testimonial-scroll::-webkit-scrollbar {
display: none;
}
.testimonial-card {
flex: 0 0 auto;
width: min(340px, 85vw);
padding: 24px;
background: var(--surface-1);
border: 1px solid var(--border-1);
border-radius: 12px;
scroll-snap-align: center;
}
.testimonial-text {
font-size: var(--text-base);
line-height: 1.6;
margin-bottom: 16px;
font-style: italic;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 12px;
}
.testimonial-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
object-fit: cover;
}
.testimonial-name {
font-weight: 600;
font-size: var(--text-sm);
}
.testimonial-role {
font-size: var(--text-xs);
color: var(--text-secondary);
}
5. Pricing for Mobile
<section class="pricing">
<h2 class="section-title">Простые тарифы</h2>
<div class="pricing-toggle">
<span class="pricing-label active">Ежемесячно</span>
<label class="switch">
<input type="checkbox" id="pricing-toggle">
<span class="switch-slider"></span>
</label>
<span class="pricing-label">Ежегодно (-20%)</span>
</div>
<div class="pricing-cards">
<div class="pricing-card">
<h3 class="pricing-card__name">Старт</h3>
<div class="pricing-card__price">
<span class="price-monthly">₽990</span>
<span class="price-yearly" style="display:none;">₽790</span>
<span class="price-period">/мес</span>
</div>
<ul class="pricing-card__features">
<li>✓ До 1,000 контактов</li>
<li>✓ Базовая аналитика</li>
<li>✓ Email поддержка</li>
</ul>
<a href="#signup" class="btn btn-secondary pricing-card__btn">Начать</a>
</div>
<div class="pricing-card featured">
<div class="pricing-card__badge">Популярный</div>
<h3 class="pricing-card__name">Бизнес</h3>
<div class="pricing-card__price">
<span class="price-monthly">₽2,990</span>
<span class="price-yearly" style="display:none;">₽2,390</span>
<span class="price-period">/мес</span>
</div>
<ul class="pricing-card__features">
<li>✓ Безлимит контактов</li>
<li>✓ Продвинутая аналитика</li>
<li>✓ Приоритетная поддержка</li>
<li>✓ API доступ</li>
</ul>
<a href="#signup" class="btn btn-primary pricing-card__btn">Выбрать</a>
</div>
</div>
</section>
.pricing {
padding: 48px 16px;
}
.pricing-toggle {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
margin-bottom: 32px;
}
.switch {
width: 48px;
height: 28px;
position: relative;
cursor: pointer;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.switch-slider {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: var(--surface-2);
border-radius: 14px;
transition: background 0.2s;
}
.switch-slider::after {
content: '';
position: absolute;
left: 2px;
top: 2px;
width: 24px;
height: 24px;
border-radius: 50%;
background: white;
transition: transform 0.2s;
}
.switch input:checked + .switch-slider {
background: var(--primary);
}
.switch input:checked + .switch-slider::after {
transform: translateX(20px);
}
.pricing-cards {
display: flex;
flex-direction: column;
gap: 16px;
}
.pricing-card {
padding: 24px;
background: var(--surface-1);
border: 1px solid var(--border-1);
border-radius: 16px;
}
.pricing-card.featured {
border-color: var(--primary);
box-shadow: 0 0 0 2px var(--primary);
position: relative;
}
.pricing-card__badge {
position: absolute;
top: -12px;
right: 16px;
padding: 4px 12px;
background: var(--primary);
color: white;
font-size: var(--text-xs);
font-weight: 600;
border-radius: 12px;
}
.pricing-card__price {
display: flex;
align-items: baseline;
gap: 4px;
margin-bottom: 16px;
}
.price-monthly {
font-size: 2rem;
font-weight: 800;
}
.price-yearly {
font-size: 2rem;
font-weight: 800;
color: #22c55e;
}
.pricing-card__features {
list-style: none;
padding: 0;
margin-bottom: 24px;
}
.pricing-card__features li {
padding: 8px 0;
border-bottom: 1px solid var(--border-1);
font-size: var(--text-sm);
}
.pricing-card__features li:last-child {
border-bottom: none;
}
.pricing-card__btn {
width: 100%;
min-height: 48px;
}
6. FAQ for Mobile
<section class="faq">
<h2 class="section-title">Частые вопросы</h2>
<div class="accordion">
<details class="accordion-item">
<summary class="accordion-item__header">
<span>Как начать использовать сервис?</span>
<span class="accordion-icon">+</span>
</summary>
<div class="accordion-item__content">
<p>Регистрация занимает 2 минуты. Просто укажите email, создайте пароль и следуйте инструкциям на экране.</p>
</div>
</details>
<details class="accordion-item">
<summary class="accordion-item__header">
<span>Можно ли отменить подписку?</span>
<span class="accordion-icon">+</span>
</summary>
<div class="accordion-item__content">
<p>Да, вы можете отменить подписку в любой момент из настроек аккаунта. Никаких скрытых платежей.</p>
</div>
</details>
<details class="accordion-item">
<summary class="accordion-item__header">
<span>Есть ли бесплатный пробный период?</span>
<span class="accordion-icon">+</span>
</summary>
<div class="accordion-item__content">
<p>Да, 14 дней бесплатного использования всех функций. Без привязки карты.</p>
</div>
</details>
</div>
</section>
.faq {
padding: 48px 16px;
}
.accordion {
display: flex;
flex-direction: column;
gap: 8px;
}
.accordion-item {
background: var(--surface-1);
border: 1px solid var(--border-1);
border-radius: 12px;
overflow: hidden;
}
.accordion-item__header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 20px;
cursor: pointer;
font-size: var(--text-base);
font-weight: 600;
list-style: none;
min-height: 56px;
}
.accordion-item__header::-webkit-details-marker {
display: none;
}
.accordion-icon {
font-size: 1.25rem;
transition: transform 0.2s;
flex-shrink: 0;
}
.accordion-item[open] .accordion-icon {
transform: rotate(45deg);
}
.accordion-item__content {
padding: 0 20px 16px;
font-size: var(--text-sm);
line-height: 1.5;
color: var(--text-secondary);
}
7. Footer for Mobile
<footer class="mobile-footer">
<div class="footer-links">
<a href="/about">О нас</a>
<a href="/blog">Блог</a>
<a href="/careers">Карьера</a>
<a href="/privacy">Конфиденциальность</a>
<a href="/terms">Условия</a>
<a href="/contact">Контакты</a>
</div>
<p class="footer-copyright">© 2026 Company. Все права защищены.</p>
</footer>
.mobile-footer {
padding: 48px 16px 32px;
text-align: center;
background: var(--surface-2);
}
.footer-links {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 16px;
margin-bottom: 24px;
}
.footer-links a {
color: var(--text-secondary);
text-decoration: none;
font-size: var(--text-sm);
min-height: 36px;
display: flex;
align-items: center;
}
.footer-copyright {
font-size: var(--text-xs);
color: var(--text-secondary);
}
8. Mobile Landing Checklist
| Category | Check |
|---|---|
| Hero | Заголовок + подзаголовок + CTA + social proof |
| CTA | Минимум 2 CTA, sticky bottom CTA |
| Features | Карточки с иконками, скриншоты чередуются |
| Social Proof | Логотипы клиентов, статистика, отзывы |
| Pricing | Переключатель месяц/год, 2-3 тарифа |
| FAQ | Аккордеон, 4-6 вопросов |
| Performance | LCP < 2.5s, lazy loading, сжатие |
| Navigation | Sticky nav или bottom tab bar |
| Footer | Ссылки, копирайт |
| Testing | iPhone + Android, реальные устройства |