因此,您通常会有许多标签(让我们使用姓名、年龄、颜色)和每个标签的值!
如果我将这些放在一个 2 列 3 行的表中,我可以确保这些值(让我们使用 Steve、19、Red)都从相同的水平位置开始。
如果我希望该列左对齐,并且我还希望标签列右对齐。然后这两列会在桌子的中心很好地相遇。
我怎么能在不使用表格但又不必设置固定宽度的情况下做到这一点!
您将不得不自己解决为标签使用固定宽度的问题(如果采用纯 CSS 路线。)以下是您想要完成的最低要求(来自HTML Dog。)
CSS:
label {
clear: left;
float: left;
width: 7em; /* or whatever length suits */
text-align: right;
}
HTML:
<form>
<div><label>Item 1</label><input /></div>
<div><label>Item 2</label><input /></div>
<div><label>Item 3</label><textarea></textarea></div>
</form>
如果您绝对不想要固定宽度,那么您可以使用这个 javascript(使用 jQuery)并从上面的 CSS 中删除固定宽度。值得注意的是,如果你让人们关闭 javascript,这看起来会很糟糕!
var largestWidth = 0;
$('label').each(
function() {
if ($(this).width() > largestWidth) {
largestWidth = $(this).width();
}
});
$('label').each(
function() {
$(this).width(largestWidth);
});
我在JSFiddle上举了一个活生生的例子。
鉴于您引用的用例,我实际上认为表格是更好的选择,但是我对表格/div 表格辩论的看法与大多数.
我猜你需要javascript来解决这个问题。我不相信有一个纯 CSS 解决方案。
在标签宽度可能不同或宽度可能根据浏览器设置(如文本大小)而变化的多语言站点中工作时,确实使用固定宽度可能是一个问题......
我听到你在说什么,但我可以提醒你表格可以用于表格数据!
但是要使用纯 CSS 来做到这一点,您可以将标签和值向左浮动,然后清除,并将两个元素设置为 50% 宽度的显示块。
您也可以使用 UL LI 列表进行安排。
<fieldset>
<legend>Sign-up Form</legend>
<form name="signup" action="index.html" method="post">
<ul>
<li> <label for="name">Name</label>
<input type="text" name="name" id="name" size="30" />
</li>
<li> <label for="email">Email</label>
<input type="text" name="email" id="email" size="30" />
</li>
<li> <label for="psw">Password</label>
<input type="text" name="psw" id="psw" size="30" />
</li>
<li> <label for="free">Free Subscrition</label>
<input type="radio" name="subscription" id="free"/>
</li>
<li><label for="submit"></label>
<button type="submit" id="submit">Send</button> </li>
<ul>
</form>
</fieldset>
css
fieldset ul, fieldset li{
border:0; margin:0; padding:0; list-style:none;
}
fieldset li{
clear:both;
list-style:none;
padding-bottom:10px;
}
fieldset input{
float:left;
}
fieldset label{
width:140px; // or you give width in % here
float:left;
}