Коротко: окно регистрации — это форма <form> из полей email, пароля и подтверждения пароля с кнопкой. Стилизуют её через CSS, а центрируют на экране flexbox. Для всплывающего окна добавляют затемнённую подложку и скрывают окно по клику вне его.
Что должно быть в форме
| Элемент | Зачем нужен |
|---|---|
| Поле email | логин пользователя |
| Поле пароля | ввод секретного кода |
| Подтверждение пароля | защита от опечатки |
| Кнопка «Зарегистрироваться» | отправка формы |
| Ссылка на вход | переход для существующих пользователей |
Разметка формы
Каждому полю давайте label — так форма понятна скринридерам, а клик по подписи фокусирует поле.
<form class="reg">
<h2>Регистрация</h2>
<label>Email
<input type="email" name="email" required>
</label>
<label>Пароль
<input type="password" name="pass" required minlength="6">
</label>
<label>Повторите пароль
<input type="password" name="pass2" required>
</label>
<button type="submit">Зарегистрироваться</button>
</form>Стилизация полей
.reg {
max-width: 360px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 12px;
}
.reg input {
width: 100%;
padding: 12px 14px;
border: 1px solid #ccc;
border-radius: 8px;
}
.reg button {
padding: 14px;
border: 0;
border-radius: 8px;
background: #003F8F;
color: #fff;
cursor: pointer;
}Вкладки: варианты окна
.reg {
max-width: 360px;
margin: 80px auto;
}Форма по центру страницы. Простой вариант, когда регистрация — отдельная страница сайта.
.overlay {
position: fixed;
inset: 0;
background: rgba(0,0,0,.5);
display: flex;
align-items: center;
justify-content: center;
}Затемнённая подложка на весь экран и форма по центру через flex. Классическое модальное окно регистрации.
.reg input:focus {
border-color: #003F8F;
outline: 2px solid #cfe0ff;
}
.reg input:invalid:not(:placeholder-shown) {
border-color: #992222;
}Состояния помогают пользователю: подсветка активного поля и красная рамка при ошибке ввода. Не забывайте про видимый фокус — это доступность.
Практика: собрать окно регистрации
- Разметьте
<form>и добавьте поля. - Каждому полю дайте
labelи типtype. - Добавьте
requiredиminlengthдля базовой проверки. - Стилизуйте поля: отступы, рамку, скругление.
- Сделайте кнопку заметной и удобной для нажатия.
- Проверьте форму на мобильном: поля не должны быть мелкими.
Частые ошибки: причина → решение
| Симптом | Причина | Решение |
|---|---|---|
| Поля разной ширины | нет width: 100% |
задать растяжение |
| Клик по подписи не работает | нет label |
обернуть поле в label |
| Окно не по центру | нет flex у подложки | align-items + justify-content |
| Кнопка не нажимается | не тот type |
type="submit" |
| Не видно активное поле | убран outline без замены |
добавить видимый фокус |
Проверьте себя
label у поля?
Вопросы и ответы
Нет. Атрибуты required и minlength удобны пользователю, но их легко обойти. Все проверки нужно дублировать на сервере.
Сделайте подложку display: flex с align-items: center и justify-content: center — форма встанет ровно по центру экрана.
Скорее всего подпись сделана через div или span, а не label. Используйте <label> и свяжите его с полем.
Крупные поля и кнопки, чтобы было удобно нажимать пальцем, и правильные типы клавиатуры: type="email" открывает удобную раскладку. Не мельчите шрифт меньше 16px.
Итоги
- Окно регистрации — форма
<form>с полями и кнопкой. - У каждого поля должен быть
labelи подходящийtype. - Проверяйте данные на сервере, а не только в браузере.
- Модальное окно центрируют flex-подложкой.
Комментарии
Пока комментариев нет — будьте первым, кто поделится мнением.