Генератор форм CSS
Формы, самая часто используемая часть большинства сайтов, одновременно являются и самой неоформленной у многих из них. Этот генератор создаёт CSS полностью оформленной формы: адаптивная сетка, пары подпись + поле ввода, текстовые области, выпадающие списки и видимые состояния фокуса в едином визуальном стиле. Задайте акцентный цвет, радиус скругления и отступы, затем скопируйте таблицу стилей. CSS сохраняет нативную семантику формы, поэтому проверка данных, работа с клавиатурой и программы чтения экрана функционируют корректно.
Как пользоваться генератором
-
1
Задайте акцентный цвет
Акцентный цвет определяет кольцо фокуса и цвет рамки каждого поля.
-
2
Выберите радиус скругления
Радиус применяется к полям ввода, текстовым областям и выпадающим спискам, чтобы все они имели единую форму.
-
3
Задайте отступы
Отступы управляют вертикальным расстоянием между полями в сетке формы.
-
4
Скопируйте CSS
Готовая таблица стилей, которую можно вставить и адаптировать, не трогая ваш HTML.
Базовая форма
<form class="form">
<label class="field">
<span class="field-label">Email</span>
<input type="email" required>
<span class="field-error">Please enter a valid email.</span>
</label>
<label class="field">
<span class="field-label">Password</span>
<input type="password" minlength="8" required>
</label>
<button type="submit" class="button">Sign up</button>
</form>
.field {
display: block;
margin-bottom: 1.25rem;
}
.field-label {
display: block;
font-weight: 500;
margin-bottom: .25rem;
}
.field input {
width: 100%;
padding: .5rem .75rem;
font: inherit;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }
Четыре распространённых стиля
| Стиль | Что это | Лучше всего подходит для |
|---|---|---|
| С контуром | Рамка вокруг поля ввода, прозрачный фон | Десктопные формы, плотные компоновки |
| С подчёркиванием | Только нижняя граница | Минималистичный/редакционный интерфейс |
| С заливкой | Серый фон, без рамки | Интерфейс в стиле Material Design |
| Плавающая метка | Метка находится внутри и поднимается вверх при фокусе или вводе значения | Мобильные интерфейсы, посадочные страницы |
Плавающая метка выглядит наиболее эффектно, однако для определения пустого состояния требуется дополнительная разметка или JavaScript. Вариант с контуром наиболее универсален.
Чек-лист по доступности
- Видимая метка для каждого поля ввода. Ни в коем случае не используйте placeholder в качестве единственной метки: он исчезает при фокусе и не проходит по контрастности.
<label for>или обёртывающий<label>. Оба варианта допустимы; обёртывающий немного проще.- Индикатор фокуса. Никогда не задавайте
outline: noneбез замены. Он нужен пользователям клавиатуры. - Сообщения об ошибках: связывайте их с полем через
aria-describedby. Не обозначайте ошибки только цветом, добавьте текстовое сообщение или иконку. - Обязательные поля: используйте атрибут
required. Для зрячих пользователей добавьте визуальный маркер (звёздочку) в метку. - Типы полей ввода: используйте
type="email",type="tel",type="url",type="number". Мобильные клавиатуры подстраиваются под них. - Атрибуты
autocomplete:autocomplete="email",autocomplete="current-password"и т. д. Это значительно сокращает объём ввода для пользователей.
Нативные состояния валидации
В CSS существуют псевдоклассы для проверки корректности форм:
:required/:optional:valid/:invalid:in-range/:out-of-range(для числовых значений с минимальным и максимальным значениями):placeholder-shown(пустое поле; виден позиционирующий символ):user-invalid(недействительный код; при этом пользователь уже взаимодействовал с системой, это соответствует типу ошибки)
Псевдокласс :user-invalid представляет собой наиболее удобный способ отображения ошибок только после выполнения пользователем действия, исключая появление красных рамок до взаимодействия. Поддержка была внедрена во всех основных версиях примерно в 2023 году.
Отключённое состояние
.field input:disabled {
background: #f3f4f6;
color: #9ca3af;
cursor: not-allowed;
}
Отключённые поля ввода нельзя сфокусировать и они не отправляются с формой. Если вы хотите оставить их доступными для программ чтения с экрана, используйте readonly вместо этого: форма отправит значение, но пользователь не сможет его изменить.
Часто задаваемые вопросы
Заменители исчезают сразу после ввода пользователем текста, поэтому их нельзя использовать в качестве меток. Кроме того, текст заменителей обычно имеет низкий контраст и не соответствует требованиям WCAG. Рекомендуется использовать видимую метку вместе с опциональным заменителем для указания форматных параметров.
Поскольку :invalid автоматически применяется к пустым обязательным полям, используйте :user-invalid (с учётом взаимодействия) или комбинируйте :invalid:not(:placeholder-shown) в качестве временного решения в более старых браузерах.
Установите значение appearance: none, удалите стандартную стрелку и добавьте собственную, с помощью фонового изображения или элемента обрамления с псевдоэлементом в виде стрелки. Списки опций внутри сохраняют стиль операционной системы и не подлежат настройке с помощью CSS.
Оба подхода применяются: валидация HTML-кодов (required, type, pattern) используется для простых случаев без использования JavaScript; JavaScript отвечает за сложные правила (уровень безопасности паролей, взаимозависимости между полями). Обязательно также используйте проверку на сервере, валидация на стороне клиента предназначена для улучшения пользовательского опыта, а не для обеспечения безопасности.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор цветовой палитры
Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.