我试图摆脱使用html TABLE标签,但无法弄清楚如何构建,我希望它看起来像什么。我使用表格标签制作了我的截图
我如何使用div或/和span等进行此操作,并仍保留标签的垂直对齐方式(本例中的firstname,lastname)?
(字体大小和颜色等在这里当然无关紧要)
alt text http://img522.imageshack.us/img522/7857/forme.jpg
感谢任何输入,
modano
答案 0 :(得分:4)
您不希望将表标记用于布局,这很好。切换时要记住的事情是尽量使HTML尽可能语义化。这意味着什么可能会有所不同,因为没有真正严格的规则,但它可以看起来像这样:
<form [..]>
<ul>
<li class="hasError">
<em class="feedback">error message here</em>
<div class="attribute">
<label for="firstName">First name:</label>
<em>(required)</em>
</div>
<div class="input">
<input type="text" name="firstName" id="firstName" />
<em class="description">optional description here</em>
</div>
<span class="clearBoth" />
</li>
<li>
<em class="feedback" />
<div class="attribute">
<label for="firstName">Last name:</label>
<em>(required)</em>
</div>
<div class="input">
<input type="text" name="lastName" id="firstName" />
<em class="description">optional description here</em>
</div>
<span class="clearBoth" />
</li>
</ul>
</form>
这实现了以下目标:
示例CSS文件看起来像(注意这是未经测试的):
form li {
width: 300px;
}
form li.hasErrors {
width: 298px;
border: 1px red;
background-color: #C55;
}
form .attribute {
float: left;
clear: left;
width: 60px;
}
form .input {
float: right;
clear: none;
width: 240px;
}
form .feedback {
display: block;
padding-left: 50px;
color: red;
}
form .description {
display: block;
clear: both;
color: #888;
}
.clearBoth { display: block; clear: both; }
答案 1 :(得分:0)
我不是CSS专家,但这应该让你开始。当然样式应该在外部样式表中。
<html>
<head>
<style>
html {
font-size: 76%;
}
body {
font-size: 1.0em;
font-family: verdana;
}
div.input {
border: 1px solid white;
clear: left;
width: 25em;
height: 5em;
padding: 2px;
margin-bottom: 1.0em;
}
div.error {
border: 1px solid red;
}
div.label {
float: left;
width: 7em;
}
div.field {
float: left;
}
div.errormessage {
color: red;
}
div.description {
color: #bbb;
}
input.text {
width: 13em;
}
</style>
</head>
<body>
<form>
<div class="input error">
<div class="label">
<div> </div>
<label>First name:<br>(required)</label>
</div>
<div class="field">
<div class="errormessage">error message here</div>
<input type="text" name="FirstName" class="text">
<div class="description">optional description here</div>
</div>
</div>
<div class="input">
<div class="label">
<div> </div>
<label>Last name:<br>(required)</label>
</div>
<div class="field">
<div class="errormessage"> </div>
<input type="text" name="LastName" class="text">
<div class="description">optional description here</div>
</div>
</div>
</form>
</body>
</html>
答案 2 :(得分:0)
可以在A list Apart: Prettier Accessible Forms
上找到关于创建可访问的HTML / CSS表单的非常好的教程通常是一个很棒的网站,提供有关如何创建优质,干净和可访问网站的信息。
答案 3 :(得分:0)
只需给你的标签一个特定的宽度;这将确保您的字段排队。您还可以浮动标签和输入,以轻松将其分成行。这是一个最小的例子:
<style type="text/css">
form { overflow: auto; position: relative; }
input { float: left; }
label { clear: left; float: left; width: 10em; }
</style>
<form>
<label>Field 1</label><input/>
<label>Field 2</label><input/>
<label>Field 3</label><input/>
</form>