仅使用 CSS 无法完全满足您的要求,但有一些方法可以非常接近。首先,使用box-sizing: border-box
,可以使标签从其自身宽度中减去 1em 间隙,使输入的宽度正好为 80%:
.lbl {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 20%;
display: inline-block;
padding-right: 1em;
}
input[type=text],input[type=password] {
width: 79%;
}
jsFiddle:http: //jsfiddle.net/Mg8cY/2/
或者,您可以使用display: table
和display: table-cell
来划分宽度。输入元素不尊重 的大多数值display
,但是如果您在输入周围添加一个额外的 HTML 标记,您就可以做到这一点。还需要在标签和输入之间添加一个额外的(空)标签来保存 1em 边距,因为表格单元格不能有边距并且在宽度中包含它们的填充。
<span class="lbl">mail</span>
<span></span>
<span><input type="text" placeholder="Email"></span>
.grid-75 p {
display: table;
width: 100%;
}
.grid-75 p span {
display: table-cell;
}
input[type=text],input[type=password] {
width: 100%;
}
.lbl {
width: 20%;
}
.lbl + span{
width: 1em; /* also needs the same font size as the label */
}
jsfiddle:http: //jsfiddle.net/Mg8cY/4/