HTML-форма с боковыми полями ввода
У меня есть html-форма, которая в основном вертикальная, но я действительно не знаю, как сделать два текстовых поля в одной строке. Например, следующая форма ниже: Я хочу, чтобы первое и последнее имя находились на одной и той же строке, а не под другой.
<form action="/users" method="post"><div style="margin:0;padding:0">
<div>
<label for="username">First Name</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text" />
</div>
<div>
<label for="name">Last Name</label>
<input id="user_last_name" name="user[last_name]" size="30" type="text" />
</div>
<div>
<label for="email">Email</label>
<input id="user_email" name="user[email]" size="30" type="text" />
</div>
<div>
<label for="pass1">Password</label>
<input id="user_password" name="user[password]" size="30" type="password" />
</div>
<div>
<label for="pass2">Confirm Password</label>
<input id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" />
</div>
Ответы
Ответ 1
Стиль отображения по умолчанию для div - это "блок". Это означает, что каждый новый div будет находиться под предыдущим.
Вы можете:
Переопределите стиль потока, используя float, как предлагает @Sarfraz.
или
Измените свой html, чтобы использовать что-то другое, кроме div, для элементов, которые вы хотите в одной строке. Я предлагаю вам просто оставить поля для поля "last_name"
<form action="/users" method="post"><div style="margin:0;padding:0">
<div>
<label for="username">First Name</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text" />
<label for="name">Last Name</label>
<input id="user_last_name" name="user[last_name]" size="30" type="text" />
</div>
... rest is same
Ответ 2
Поместите style="float:left"
в каждый из ваших div:
<div style="float:left;">...........
Пример:
<div style="float:left;">
<label for="username">First Name</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text" />
</div>
<div style="float:left;">
<label for="name">Last Name</label>
<input id="user_last_name" name="user[last_name]" size="30" type="text" />
</div>
Чтобы поместить элемент в новую строку, поместите этот div ниже:
<div style="clear:both;"> </div>
Конечно, вы также можете создавать классы в файле CSS:
.left{
float:left;
}
.clear{
clear:both;
}
И тогда ваш html должен выглядеть так:
<div class="left">
<label for="username">First Name</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text" />
</div>
<div class="left">
<label for="name">Last Name</label>
<input id="user_last_name" name="user[last_name]" size="30" type="text" />
</div>
Чтобы поместить элемент в новую строку, поместите этот div ниже:
<div class="clear"> </div>
Дополнительная информация:
Ответ 3
Для экономии полосы пропускания мы не должны включать <div>
для каждой пары <label>
и <input>
Это решение может служить вам лучше и может повысить удобочитаемость
<div class="form">
<label for="product_name">Name</label>
<input id="product_name" name="product[name]" size="30" type="text" value="4">
<label for="product_stock">Stock</label>
<input id="product_stock" name="product[stock]" size="30" type="text" value="-1">
<label for="price_amount">Amount</label>
<input id="price_amount" name="price[amount]" size="30" type="text" value="6.0">
</div>
Css для указанной выше формы будет
.form > label
{
float: left;
clear: right;
}
.form > input
{
float: right;
}
Я считаю, что вывод будет следующим:
![Demo]()
Ответ 4
Я бы пошел с решением Larry K, но вы также можете настроить отображение встроенного блока, если вы хотите использовать преимущества как блочных, так и встроенных элементов.
Вы можете сделать это в теге div, вставив:
style="display:inline-block;"
Или в стили CSS с помощью этого метода:
div { display:inline-block; }
Надеюсь, что это поможет, но, как упоминалось ранее, я лично поеду для решения Ларри К. -)
Ответ 5
Вы должны поместить ввод для фамилии в тот же div, где у вас есть имя.
<div>
<label for="username">First Name</label>
<input id="user_first_name" name="user[first_name]" size="30" type="text" />
<input id="user_last_name" name="user[last_name]" size="30" type="text" />
</div>
Затем в вашем CSS укажите свои #user_first_name и высоту #user_last_name и поместите их влево. Например:
#user_first_name{
max-width:100px; /*max-width for responsiveness*/
float:left;
}
#user_lastname_name{
max-width:100px;
float:left;
}