Выравнивание input полей в HTML: проблемы и решения

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для достижения идеального выравнивания полей ввода в HTML вам пригодятся технологии CSS. Здесь ключевую роль играют CSS Flexbox и CSS Grid.

Пример применения Flexbox выглядит следующим образом:

HTML
Скопировать код
<style>
  .flex-row {
    display: flex;
    justify-content: flex-start;
    align-items: center;
  }
</style>
<div class="flex-row">
  <input type="text" placeholder="Имя">
  <input type="text" placeholder="Фамилия">
  <button>Отправить</button>
</div>

И пример для Grid:

HTML
Скопировать код
<style>
  .grid-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
  }
</style>
<div class="grid-row">
  <input type="email" placeholder="Email">
  <input type="password" placeholder="Пароль">
  <button>Войти</button>
</div>

Их можно легко адаптировать под свои конкретные потребности.

Использование CSS display: flex для меток и полей ввода

Если форма содержит метки и поля ввода, мы можем аккуратно выстроить их. Воспользуемся стилями для <label> и <input>, чтобы добиться идеального взаимного расположения. Можно организовать их в строку или столбец:

HTML
Скопировать код
<style>
  .form-control {
    display: flex;
    flex-direction: column;
    margin-bottom: 15px;
  }
  .form-label {
    margin-bottom: 5px;
  }
  .form-label-inline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 5px;
  }
</style>
<form>
  <div class="form-control">
    <label class="form-label">Email</label>
    <input type="email">
  </div>
  
  <div class="form-control form-label-inline">
    <label>Пароль</label>
    <input type="password">
  </div>
</form>

Медиазапросы для адаптивного выравнивания

Медиазапросы в CSS позволят адаптировать ваши формы под экраны мобильных устройств:

CSS
Скопировать код
<style>
  @media (max-width: 600px) {
    .form-label-inline {
      flex-direction: column;
    }
  }
</style>

Это означает, что на экранах шириной 600px и меньше метки и поля ввода будут располагаться вертикально.

Визуализация

Представьте формы как участников эстафеты:

🏁 🏃💨 -> 🏃💨 -> 🏃💨 -> 🏁

Как и бегуны в эстафете, элементы формы должны быть идеально выстроены для успешной передачи данных. Позаботьтесь о правильнОМ выравнивании, чтобы элементы <input> были одноуровневыми:

HTML
Скопировать код
<form>
  <input>🏃‍♂️</input>
  <input>🏃‍♀️</input>
  <input>🏃</input>
</form>

CSS-таблицы для поддержки устаревших браузеров

Для совместимости с устаревшими браузерами можно применить CSS-таблицы:

CSS
Скопировать код
.form-table { display: table; width: 100%; }
.form-row { display: table-row; }
.form-cell { display: table-cell; }

Необходимо учитывать, что речь идет о CSS-таблицах, а не о HTML-тегах <table>.

Доступность и простота использования

Не забывайте о доступности при разработке форм. Свяжите метки с полями ввода с помощью атрибута for:

HTML
Скопировать код
<label for="username">Имя пользователя:</label>
<input id="username" type="text" name="username">

Полезные материалы

  1. Полное руководство по Flexbox | CSS-Tricks — Обстоятельный обзор CSS Flexbox.
  2. Основные концепции Flexbox – CSS: Каскадные таблицы стилей | MDN — Документация Mozilla по Flexbox.
  3. Полное руководство по CSS Grid | CSS-Tricks — Всё о CSS Grid.
  4. Формы · Bootstrap — Как использовать Bootstrap для оформления форм.
  5. Оформление веб-форм – Обучение веб-разработке | MDN — Инструкция по стилизации форм с помощью CSS.
  6. Модель CSS Box | CSS-Tricks — Познакомьтесь с box model для регулировки выравнивания.
  7. Понимание свойства CSS vertical-align — Использование vertical-align для элементов форм.