Как выровнять входные формы в 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>
Просто поместите выравнивание в открывающий тег.