Как мне выровнять поле ввода по вертикали в форме?

#html #css

#HTML #css — файл #css

Вопрос:

Введите текстовое поле в форму

Привет,

Как мне выровнять поле ввода таким образом, чтобы они начинались с одной вертикальной линии? Есть ли метод CSS, который я могу использовать вместо ручного редактирования каждого поля ввода?

Это html-код:

  <form id="survey-form"> 
    <div id="form-group"> 
      <label for="name" id="name-label"> Name: </label> 
      <input type="text" id="name" name="name" placeholder="full name" required></input><br> 
    </div> 

    <div id="form-group"> 
      <label for="email" id="email-label"> Email: </label> 
      <input type="email" id="email" name="email" placeholder="validated email" required></input><br> 
    </div>

    <div id="form-group"> 
      <label for="number" id="number-label"> Contact: </label>
      <input type="number" id="number" name="contact" min="00000000" max="99999999" placeholder="phone number"></input><br> 
    </div>
 </form>
  

Для CSS у меня в настоящее время есть только:

 input {
  margin-bottom: 15px;
  width: 10%;
}
  

Мне было интересно, как я могу закодировать это в CSS таким образом, чтобы поля ввода текста выровнялись? Например, если я использую заполнение, текстовые поля все равно не будут выровнены, так как длина метки отличается.

Комментарии:

1. Пожалуйста, предоставьте свой html amp; css-код для этой конкретной формы.

2. Привет, я включил свой код. Спасибо

3. Хорошо, я добавил ответ для вас. Надеюсь, это поможет.

Ответ №1:

Во-первых, вам не нужно закрывать ввод как </input> .

Кроме того, при последнем вводе вы забыли свой <div id="form-group"> .

Теперь идея выровнять все входные данные заключается в том, чтобы просто сделать все ваши метки в виде элемента встроенного блока с определенной шириной. Таким образом, он вытеснит все входные данные и выровняет их по истечении ширины.

 input {
  margin-bottom: 15px;
  width: 10%;
}

#form-group label {
  display: inline-block;
  width: 60px;
}  
 <form id="survey-form">
  <div id="form-group">
    <label for="name" id="name-label"> Name: </label>
    <input type="text" id="name" name="name" placeholder="full name" required><br>
  </div>

  <div id="form-group">
    <label for="email" id="email-label"> Email: </label>
    <input type="email" id="email" name="email" placeholder="validated email" required><br>
  </div>

  <div id="form-group">
    <label for="number" id="number-label"> Contact: </label>
    <input type="number" id="number" name="contact" min="00000000" max="99999999" placeholder="phone number">
  </div>
</form>  

Ответ №2:

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

 #form-group{
  display:flex;
  align-items:center;
  margin-bottom:20px;
}
#form-group label{
  flex:1;
  flex-basis:20%;
  max-width:20%;
}
#form-group input {
  flex:2;
  flex-basis:20%;
  max-width:20%;
}
  

Рабочая демонстрация

 #form-group{
  display:flex;
  align-items:center;
  margin-bottom:20px;
}
#form-group label{
  flex:1;
  flex-basis:20%;
  max-width:20%;
}
#form-group input {
  flex:2;
  flex-basis:20%;
  max-width:20%;
}  
 <form id="survey-form"> 
    <div id="form-group"> 
      <label for="name" id="name-label"> Name: </label> 
      <input type="text" id="name" name="name" placeholder="full name" required>
    </div> 

    <div id="form-group"> 
      <label for="email" id="email-label"> Email: </label> 
      <input type="email" id="email" name="email" placeholder="validated email" required>
    </div>

    <div id="form-group"> 
      <label for="number" id="number-label"> Contact: </label>
      <input type="number" id="number" name="contact" min="00000000" max="99999999" placeholder="phone number">
    </div>
 </form>  

Комментарии:

1. если вы измените ширину метки и ввода, чтобы изменить оба flex-basis:20%;max-width:20%; в соответствии с вашими потребностями.