html - 如何正确设计html表单
问题描述
几天前我刚开始 Web 开发,所以在设计表单时遇到了问题。我正在使用 html 和 css 制作表单,但它的设计不是我需要的。我尝试通过将标签和输入放入 1 div 然后将标签浮动到左侧并输入到右侧但它无法正常工作。
片段
body,
html {
margin: 0;
padding: 0;
}
.form {
width: 50%;
}
.group {
width: 100%;
margin: 20px;
}
.group label {
float: left;
}
.inputrow input {
float: right;
}
.inputrow input:not(.col-3) {
width: 80%;
}
.col-3 {
width: 20%;
}
.clear {
clear: both;
}
<p>New Contact</p>
<hr style="height:1px;border:none;color:#333;background-color:#333;" />
<div class="form">
<div class="group">
<lable>Primary Contact</lable>
<div class="inputrow">
<select class="col-3">
<option>Mr.</option>
<option>Mrs.</option>
<option>Ms.</option>
<option>Miss.</option>
<option>Dr.</option>
</select>
<input class="col-3" type="text" placeholder="First Name" name="FirstName" />
<input class="col-3" type="text" placeholder="Last Name" name="LastName" />
</div>
</div>
<div class="clear"></div>
<div class="group">
<label>Company Name</label>
<div class="inputrow">
<input class="col-1" type="text" placeholder="Company Name" name="CompanyName" />
</div>
</div>
<div class="clear"></div>
<div class="group">
<label>Contact Email</label>
<div class="inputrow">
<input type="text" placeholder="Contact Email" name="Email" />
</div>
</div>
<div class="clear"></div>
<div class="group">
<label>Contact Phone</label>
<div class="inputrow">
<input type="text" placeholder="Contact Phone" name="Phone" />
</div>
</div>
<div class="clear"></div>
<div class="group">
<label>Website</label>
<div class="inputrow">
<input type="text" placeholder="Website" name="Website" />
</div>
</div>
<div class="clear"></div>
<div class="group">
<label>Contact Type</label>
<div class="inputrow">
<input type="radio" name="contacttype" value="Customer">Customer
<input type="radio" name="contacttype" value="Vendor">Vendor
</div>
</div>
</div>
解决方案
您尝试实现的示例显然都是左对齐的。
您可以寻求这样的解决方案(更简单,更清洁):
body,
html {
margin: 0;
padding: 0;
}
.form {
width: 100%;
}
.group {
width: 100%;
padding: 20px;
clear: both;
}
label,
input,
select {
float: left;
}
label {
width: 150px;
}
.m-right {
margin-right: 20px;
}
<p>New Contact</p>
<hr style="height:1px;border:none;color:#333;background-color:#333;" />
<div class="form">
<div class="group">
<label>Primary Contact</label>
<select class="m-right">
<option>Mr.</option>
<option>Mrs.</option>
<option>Ms.</option>
<option>Miss.</option>
<option>Dr.</option>
</select>
<input class="m-right" type="text" placeholder="First Name" name="FirstName" />
<input type="text" placeholder="Last Name" name="LastName" />
</div>
<div class="group">
<label>Company Name</label>
<input type="text" placeholder="Company Name" name="CompanyName" />
</div>
<div class="group">
<label>Contact Email</label>
<input type="text" placeholder="Contact Email" name="Email" />
</div>
<div class="group">
<label>Contact Phone</label>
<input type="text" placeholder="Contact Phone" name="Phone" />
</div>
<div class="group">
<label>Website</label>
<input type="text" placeholder="Website" name="Website" />
</div>
<div class="group">
<label>Contact Type</label>
<label><input type="radio" name="contacttype" value="Customer">Customer</label>
<label><input type="radio" name="contacttype" value="Vendor">Vendor</label>
</div>
</div>
推荐阅读
- reactjs - 反应 TypeScript onClick 事件?
- javascript - 错误:ENOENT:没有打开这样的文件或目录
- python - 名称“get_default_graph”未定义
- r - 在循环中填充多个矩阵,使用矩阵的名称为循环的每次迭代选择不同的矩阵?
- spring - Spring MVC App,在表单中:输入路径 = 将给定对象转换为字符串,当我需要对象访问地图的值时
- c - 无法在 c 中初始化数组 | 警告:从 long 转换为 long unsigned
- ejb - EJB:Websphere Liberty 中的远程事务传播
- python - 无法启动“软件更新程序”:无法执行子进程 /usr/bin/update-manager(符号链接链接级别太多)
- bash - 查找第一行是一个单词或更少的文件
- linux - 如何使用 Nginx 服务器在 Ubuntu 服务器上部署 dotnet 核心应用程序?