- •1. Табличная вёрстка
- •2. Блочная вёрстка (на div и css)
- •3. Flexbox-вёрстка
- •4. Grid-вёрстка (css Grid)
- •5. Адаптивная вёрстка (Responsive Web Design, rwd)
- •6. Резиновая вёрстка (Fluid Layout)
- •7. Фиксированная вёрстка (Static Layout)
- •8. Вёрстка с использованием css-фреймворков (Bootstrap, Tailwind, Foundation)
- •Адаптивный дизайн (Responsive Web Design, rwd)
- •Учёт особенностей устройства
- •Оптимизация пользовательского опыта
- •2. Синтаксис и структура
- •3. Комбинирование условий
- •3. Примеры работы
- •5. Важные особенности
- •3. Открытие ссылки в новом окне
- •1. Создание внешнего css-файла
- •2. Подключение css к html-страницам
- •3. Преимущества внешнего css
- •4. Альтернативные способы (не рекомендуются)
- •5. Дополнительные возможности
- •1. Текстовые поля
- •2. Числа и диапазоны
- •3. Даты и время
- •4. Выбор вариантов
- •5. Файлы и специальные поля
- •6. Кнопки
- •7. Особые типы
- •1. Управление галереей проектов (карусель)
- •2. Валидация формы обратной связи
- •3. Мобильное меню (бургер)
2. Валидация формы обратной связи
Код:
javascript
Copy
Download
form.addEventListener('submit', function(e) {
e.preventDefault(); // Отменяет стандартную отправку формы
resetErrors(); // Сбрасывает предыдущие ошибки
// Проверка имени
if (nameInput.value.trim() === '') {
showError('name-error', 'Пожалуйста, введите ваше имя');
isValid = false;
}
// Проверка телефона (только цифры, скобки, пробелы)
phoneInput.value = phoneInput.value.replace(/[^0-9\s+\-()]/g, '');
// Проверка email (регулярное выражение)
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(emailInput.value.trim())) {
showError('email-error', 'Введите корректный email');
isValid = false;
}
// Если валидация пройдена — форма сбрасывается
if (isValid) form.reset();
});
Как работает:
Запрет стандартной отправки (e.preventDefault()).
Валидация полей:
Имя: проверка на пустоту и минимальную длину (2 символа).
Телефон: удаляет все символы, кроме цифр, пробелов, +, -, скобок.
Email: проверка формата через регулярное выражение.
Вывод ошибок под полями через showError().
Сброс формы при успешной валидации.
3. Мобильное меню (бургер)
Код:
javascript
Copy
Download
const menuToggle = document.querySelector('.mobile-menu-toggle');
const navLinks = document.getElementById('nav-links');
menuToggle.addEventListener('click', function() {
// Переключаем класс 'active' для отображения/скрытия меню
navLinks.classList.toggle('active');
// Анимация иконки бургера
const spans = menuToggle.querySelectorAll('span');
if (navLinks.classList.contains('active')) {
spans[0].style.transform = 'rotate(45deg) translate(5px, 5px)';
spans[1].style.opacity = '0';
spans[2].style.transform = 'rotate(-45deg) translate(7px, -6px)';
} else {
spans.forEach(span => span.style = ''); // Сброс анимации
}
});
// Закрытие меню при клике вне его
document.addEventListener('click', function(event) {
if (!event.target.closest('.nav-links') && !event.target.closest('.mobile-menu-toggle')) {
navLinks.classList.remove('active');
}
});
Как работает:
При клике на бургер-иконку:
Меню появляется/исчезает (через добавление/удаление класса .active).
Иконка анимируется в крестик (поворот линий).
При клике вне меню — оно закрывается.
Дополнительные функции
Вспомогательные методы:
showError(id, message) — показывает сообщение об ошибке под полем.
resetErrors() — скрывает все ошибки и сбрасывает стили полей.
isValidEmail() / isValidPhone() — проверяют корректность данных.
Обработчики событий:
DOMContentLoaded — код выполняется после полной загрузки DOM.
input (для телефона) — фильтрация вводимых символов в реальном времени.
Итог: что делает JavaScript на странице?
Галерея проектов: → Плавная прокрутка фотографий кнопками.
Форма обратной связи: → Валидация данных перед отправкой. → Подсветка ошибок.
Мобильное меню: → Анимация бургер-иконки. → Удобное управление на маленьких экранах.
