我对表单中的一组字段进行了一些标记:
<ul>
<li>
<label>Field label</label>
<ul>
<li>
<span>
<label>some label</label>
<input type="text" value="a" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<input type="text" value="b" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<input type="text" value="c" size="35" maxlength="35">
</span>
</li>
</ul>
</li>
</ul>
还有一些 CSS 来定位它们:
*{
position: relative;
}
span{
position: relative;
display: inline-block;
}
input{
float:left;
}
label{
float:left;
margin-top: 15px;
left: 70px;
}
li > ul{
margin-left: -100px;
max-width: 400px;
display: inline-block;
}
li > label{
float: left;
vertical-align: top;
margin: 0;
left: 0;
width: 120px;
display: inline-block;
}
这导致了这种布局,非常适合我的需要:
问题:当某些字段填写不正确时,系统会生成错误消息,导致标记如下:
<ul>
<li>
<label>Field label</label>
<ul>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="a" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="b" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="c" size="35" maxlength="35">
</span>
</li>
</ul>
</li>
</ul>
这会导致这样的结果:
相反,我希望错误消息显示如下:
我已经尝试使跨度内的标签绝对定位,然后与跨度的底部对齐。但是,由于某种原因,即使我给标签 a ,它也总是被文本输入重叠margin-top
。
插入错误消息后,如何使表单看起来像所需的布局?