Практика: создание landing page с анимациями и адаптацией

Подготовка проекта и структура HTML

Начнём с базовой разметки HTML5. Используем семантические теги для лучшей SEO-оптимизации и доступности:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TechLand - инновационные решения</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <header class="header">
        <nav>...</nav>
    </header>
    <main>
        <section class="hero">...</section>
        <section class="features">...</section>
    </main>
    <footer>...</footer>
</body>
</html>

🔍 Совет: Для быстрого старта используйте Emmet-сокращения в VS Code (например, ! + Tab для шаблона HTML5).


Базовая стилизация и переменные CSS

Создадим файл styles.css с современным подходом к стилизации:

:root {
    --primary: #4f46e5;
    --secondary: #f43f5e;
    --dark: #1e293b;
    --light: #f8fafc;
    --transition: all 0.3s ease;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Inter', sans-serif;
    line-height: 1.6;
    color: var(--dark);
    background: var(--light);
}

🌈 Важно: CSS-переменные (--var-name) — мощный инструмент для поддержания согласованного дизайна.


Адаптивная сетка на Flexbox/Grid

Реализуем отзывчивый макет с mobile-first подходом:

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

.features-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 2rem;
}

@media (max-width: 768px) {
    .features-grid {
        grid-template-columns: 1fr;
    }
}

Плавные анимации и трансформации

Добавим интерактивности с помощью CSS-анимаций:

.cta-button {
    background: var(--primary);
    transition: var(--transition);
    transform: translateY(0);
}

.cta-button:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.hero-content {
    animation: fadeIn 1s ease-out forwards;
}

Профессиональный приём: Комбинируйте transform и transition для оптимальной производительности анимаций.


Адаптивное меню с "бургером"

Реализуем мобильное меню с чистым CSS:

.nav-toggle {
    display: none;
}

@media (max-width: 768px) {
    .nav-toggle {
        display: block;
        position: relative;
        z-index: 100;
    }

    .nav-menu {
        position: fixed;
        top: 0;
        left: -100%;
        width: 80%;
        height: 100vh;
        transition: var(--transition);
    }

    .nav-toggle:checked ~ .nav-menu {
        left: 0;
    }
}

Оптимизация изображений и lazy loading

Улучшаем производительность:

<picture>
    <source srcset="image.webp" type="image/webp">
    <source srcset="image.jpg" type="image/jpeg"> 
    <img src="image.jpg" loading="lazy" alt="Описание">
</picture>

🚀 Важно: WebP-формат уменьшает вес изображений на 25-35% без потери качества.


Итоговая проверка и тестирование

Перед публикацией обязательно:

  1. Проверьте валидность кода через W3C Validator
  2. Протестируйте на реальных устройствах
  3. Проверьте скорость загрузки в Lighthouse
  4. Убедитесь в корректности анимаций
/* Добавьте это в конце для отладки */
.debug * {
    outline: 1px solid red;
}

Включите этот стиль при необходимости быстрой проверки структуры.

Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие