我正在创建一个HTML页面,其中包含用于填写结算信息的字段列表。 由于标签是直线的,因此它们的宽度由包含在其中的文本确定,因此使它们具有不同的宽度,这使得输入框不对齐。这使得一个非常丑陋,无组织的外观。
<fieldset>
<legend>Billing Information</legend><br>
Card Number: <input type="text"><br><br>
Expiration Month: <input type="number"><br><br>
Expiration Year: <input type="number"><br><br>
Name on Card: <input type="text"><br><br>
Address: <input type="text"><br><br>
City: <input type="text"><br><br>
State: <input type="text"><br><br>
Country: <input type="text"><br><br>
ZIP Code: <input type="number"><br><br>
</fieldset><br>
&#13;
我需要对HTML代码执行哪些操作对齐标签的右侧和输入框的左侧?
答案 0 :(得分:1)
您可以使用表格或使用display: table-row
&amp; display: table-cell
css模拟表格单元格布局如下:
fieldset {display: inline-block; padding: 10px 20px;} /* 'display: inline-block' is not necessary, just for appearance */
.row {display: table-row; }
.lbl {display: table-cell; text-align:right; padding: 8px 5px;}
&#13;
<fieldset>
<legend>Billing Information</legend>
<div class="row"><span class="lbl">Card Number: </span><input type="text"></div>
<div class="row"><span class="lbl">Expiration Month: </span><input type="number"></div>
<div class="row"><span class="lbl">Expiration Year: </span><input type="number"></div>
<!-- ... /-->
</fieldset><br>
&#13;
答案 1 :(得分:1)
使用表格结构为您的字段列表进行正确对齐。
<fieldset>
<legend>Billing Information</legend>
<table>
<tr><td>Card Number:</td><td><input type="text"></td></tr>
<tr><td>Expiration Month:</td><td> <input type="number"></td></tr>
<tr><td>Expiration Year:</td><td> <input type="number"></td></tr>
<tr><td>Name on Card:</td><td> <input type="text"></td></tr>
<tr><td>Address:</td><td> <input type="text"></td></tr>
<tr><td>City:</td><td> <input type="text"></td></tr>
<tr><td>State:</td><td> <input type="text"></td></tr>
<tr><td>Country:</td><td> <input type="text"></td></tr>
<tr><td>ZIP Code:</td><td> <input type="number"></td></tr>
</table>
</fieldset>
&#13;
答案 2 :(得分:0)
如果将元素放入合适的容器并使用CSS进行艰苦的工作,您会发现它更容易。
<style type="text/css">
label {
display: inline-block;
font-weight: bold;
width: 10em;
}
</style>
<fieldset>
<legend>Billing Information</legend><br>
<p><label for="card-number">Card Number:</label><input type="text" name="card-number" id="card-number"></p>
<p><label for="expiration-month">Expiration Month:</label><input type="text" name="expiration-month" id="expiration-month"></p>
<!-- etc -->
</fieldset>
label
执行3个工作:
label
元素可以包含在输入元素周围:
<label>Expiration Month: <input …></label>
或附加for
属性。 for
属性引用 id ,它是name
属性的独立。正如您在示例中看到的那样,它们通常设置为相同的值。
在CSS中,我们将宽度设置为合理的值。但是,label
需要显示为inline-block
才能使宽度生效。
答案 3 :(得分:0)
使用flexbox
来解决您的问题。
使用fieldset
包裹容器display: flex
,将flex-direction
设置为column
。将孩子包裹在div
内,并将flex-grow
元素的span
属性设置为1
。
使用flexbox将负责响应。
fieldset {
display: flex;
flex-direction: column;
}
div {
display: flex;
margin: 10px;
}
span {
flex: 1;
}
&#13;
<fieldset>
<legend>Billing Information</legend>
<div><span>Card Number: </span><input type="text"> </div>
<div><span>Expiration Month:</span> <input type="number"></div>
<div><span> Expiration Year:</span> <input type="number"></div>
<div><span>Name on Card:</span> <input type="text"> </div>
<div><span>Address:</span> <input type="text"> </div>
<div><span>City:</span> <input type="text"></div>
<div><span>State: </span><input type="text"></div>
<div><span>Country:</span> <input type="text"></div>
<div><span>ZIP Code:</span> <input type="number"></div>
</fieldset>
&#13;