Как выровнять входные формы в HTML

Я новичок в HTML, и я пытаюсь узнать, как использовать формы.

Самая большая проблема, которую я имею до сих пор, - это согласование форм. Вот пример моего текущего файла HTML:

<form>
 First Name:<input type="text" name="first"><br />
 Last Name:<input type="text" name="last"><br />
 Email:<input type="text" name="email"><br />
</form>

Проблема с этим заключается в том, что поле поля после "Email" сильно отличается с точки зрения интервала по сравнению с первым и последним. Каков "правильный" способ сделать это так, чтобы они "выстраивались" по существу?

Я пытаюсь практиковать хорошую форму и синтаксис... многие люди могут сделать это с помощью CSS. Я не уверен, я только что изучил самые основы HTML до сих пор.

Ответ 1

В другом примере это использует CSS, я просто помещаю форму в div с классом контейнера. И указали, что входящие элементы, содержащиеся внутри, должны быть на 100% от ширины контейнера и не иметь никаких элементов с обеих сторон.

.container {
  width: 500px;
  clear: both;
}

.container input {
  width: 100%;
  clear: both;
}
<html>

<head>
  <title>Example form</title>
</head>

<body>
  <div class="container">
    <form>
      <label>First Name</label>
      <input type="text" name="first"><br />
      <label>Last Name</label>
      <input type="text" name="last"><br />
      <label>Email</label>
      <input type="text" name="email"><br />
    </form>
  </div>
</body>

</html>

Ответ 2

Принятый ответ (установка явной ширины в пикселях) затрудняет внесение изменений и прерывается, когда пользователи используют другой размер шрифта. Использование таблиц CSS, с другой стороны, прекрасно работает:

form  { display: table;      }
p     { display: table-row;  }
label { display: table-cell; }
input { display: table-cell; }
<form>
  <p>
    <label for="a">Short label:</label>
    <input id="a" type="text">
  </p>
  <p>
    <label for="b">Very very very long label:</label>
    <input id="b" type="text">
  </p>
</form>

Ответ 3

Простое решение для вас, если вы новичок в HTML, - это просто использовать таблицу, чтобы выровнять все.

<form>
  <table>
    <tr>
      <td align="right">First Name:</td>
      <td align="left"><input type="text" name="first" /></td>
    </tr>
    <tr>
      <td align="right">Last Name:</td>
      <td align="left"><input type="text" name="last" /></td>
    </tr>
    <tr>
      <td align="right">Email:</td>
      <td align="left"><input type="text" name="email" /></td>
    </tr>
  </table>
</form>

Ответ 4

Мне гораздо легче изменить отображение меток на встроенный блок и установить ширину

label {
    display: inline-block;
    width:100px;
    text-align: right;
}

Ответ 5

Вы должны использовать таблицу. В логической структуре данные являются табличными: именно поэтому вы хотите, чтобы он был выровнен, потому что вы хотите показать, что метки не связаны исключительно с полями ввода, но также друг с другом, в двумерной структуре.

[подумайте над тем, что вы сделали бы, если бы вместо строк ввода отображались строковые или числовые значения.]

Ответ 6

Для этого я предпочитаю хранить правильную семантику HTML и максимально использовать CSS.

Что-то вроде этого выполнит работу:

label{
  display: block;
  float: left;
  width : 120px;    
}

Однако один недостаток: вам может потребоваться выбрать правильную ширину меток для каждой формы, и это непросто, если ваши метки могут быть динамическими (например, метки I18N).

Ответ 7

с помощью css

.containerdiv label {
  float:left;
  width:25%;
  text-align:right;
  margin-right:5px; /* optional */
}
.containerdiv input {
  float:left;
  width:65%;
}

это даст вам что-то вроде:

           label1 |input box             |
    another label |another input box     |

Ответ 8

Хорошо для самых основ вы можете попытаться выровнять их в таблице. Однако использование таблицы плохо для макета, поскольку таблица предназначена для содержимого.

То, что вы можете использовать, - это плавающие методы CSS.

Код CSS

.styleform label{float:left;}
.styleform input{margin-left:200px;} /* this gives space for the label on the left */
.styleform .clear{clear:both;} /* prevent elements from stacking weirdly */

HTML

<div class="styleform">
<form>
<label>First Name:</label><input type="text" name="first" /><div class="clear"></div>
<label>Last Name:</label><input type="text" name="first" /><div class="clear"></div>
<label>Email:</label><input type="text" name="first" /><div class="clear"></div>
</form>
</div>

Выработанную статью, которую я написал, можно найти, отвечая на вопрос о проблеме с float IE7: IE7 поплавковые проблемы справа

Ответ 9

Я большой поклонник использования списков определений.

<dl>
<dt>Username:</dt>
<dd><input type="text" name="username" /></dd>
<dt>Password:</dt>
<dd><input type="password" name="password" /></dd>
</dl>

Их легко стилизовать с помощью CSS, и они избегают стигмы использования таблиц для макета.

Ответ 10

Я знаю, что на это уже был дан ответ, но я нашел новый способ правильно их выровнять - с дополнительным преимуществом - см. http://www.gargan.org/en/Web_Development/Form_Layout_with_CSS/

в основном вы используете элемент метки вокруг ввода и выравниваете, используя это:

<label><span>Name</span> <input /></label>
<label><span>E-Mail</span> <input /></label>
<label><span>Comment</span> <textarea></textarea></label>

а затем с помощью css вы просто выровняете:

label {
    display:block;
    position:relative;
}

label span {
    font-weight:bold;
    position:absolute;
    left: 3px;
}

label input, label textarea, label select {
    margin-left: 120px;    
}
  • вам не нужен беспорядочный лоб, лежащий вокруг для разломов строк - это означает, что вы можете быстро выполнить многоколоночный макет динамически
  • вся строка доступна для кликов. Специально для флажков это огромная помощь.
  • Динамически отображать/скрывать строки линий легко (вы просто ищете вход и спрячете его родительский → метку)
  • вы можете назначить классы для всего ярлыка, что значительно упростит ввод ошибок (не только вокруг поля ввода).

Ответ 11

Традиционным методом является использование таблицы.

Пример:

<table>
  <tbody>
     <tr>
        <td>
           First Name:
        </td>
        <td>
           <input type="text" name="first">
        </td>
     </tr>
     <tr>
        <td>
           Last Name:
        </td>
        <td>
           <input type="text" name="last">
        </td>
     </tr>
  </tbody>
</table>

Однако многие утверждают, что таблицы ограничивают и предпочитают CSS. Преимущество использования CSS заключается в том, что вы можете использовать различные элементы. Из div, упорядоченного и неупорядоченного списка вы можете выполнить тот же макет.

В конце концов, вы захотите использовать то, с чем вам больше всего нравится.

Подсказка: Таблицы легко начать с.

Ответ 12

css Я использовал эту проблему, подобную Gjaa, но лучше стильный

p
{
    text-align:center;
        }
.styleform label
{
    float:left;
    width: 40%;
    text-align:right;
    }
.styleform input
{
    float:left;
    width: 30%;
    }

Вот мой HTML, используемый специально для простой регистрационной формы без php-кода

<form id="registration">
    <h1>Register</h1>
    <div class="styleform">
    <fieldset id="inputs">
        <p><label>Name:</label> 
          <input id="name" type="text" placeholder="Name" autofocus required>
        </p>
        <p><label>Email:</label>   
          <input id="email" type="text" placeholder="Email Address" required>
        </p>
        <p><label>Username:</label>
          <input id="username" type="text" placeholder="Username" autofocus required>
        </p>
        <p>   
          <label>Password:</label>
          <input id="password" type="password" placeholder="Password" required>
        </p>
    </fieldset>
    <fieldset id="actions">

    </fieldset>
    </div>
    <p>
          <input type="submit" id="submit" value="Register">
          </p>

Это очень просто, и я только начинаю, но он работал довольно хорошо

Ответ 13

Вставьте теги ввода в неупорядоченный список. Создайте тип стиля none. Вот пример.

<ul>
Input1     
<li> <input type="text" />
Input2
<li> <input type="text" />
<ul/>

Работал для меня!

Ответ 14

<form>
    <div>
        <label for='username'>UserName</label>
        <input type='text' name='username' id='username' value=''>  
    </div>
</form>

В CSS вы должны объявить как метку, так и ввод как отображение: встроенный блок и указать ширину в соответствии с вашими требованиями. Надеюсь, что это поможет вам.:)

Ответ 15

Я думаю, было бы проще, если бы вы использовали таблицу для структурирования вашей формы. Может быть утомительным, но ничего "скопировать и вставить" с небольшим редактированием не удастся исправить.

<form>
<table>
<tr>
<td> <label>First Name:</label> </td> <td> <input type="text" name="first"> </td> </tr>
<tr> <td> <label>Last Name:</label> </td> <td> <input type="text" name="last"> </td></tr>
<tr> <td> <label> Email: </label> </td> <td> <input type="text" name="email"> </td></tr>
</table>
</form>

Вы можете добавить некоторые дополнения или поместить содержимое ячейки, чтобы сделать ее более просторной.

Ответ 16

Просто добавьте

<form align="center ></from>

Просто поместите выравнивание в открывающий тег.