我有一个HTML复选框列表,我希望以下列格式显示:
Click all that apply: Title A Title B Option 1 [ ] [ ] Option 2 [ ] [ ] Option 3 [ ] [ ]
我想知道在语义上编码这个的最佳方法是什么?
我在语义正确的复选框上看到related question,但这并没有考虑标题。
有什么想法吗?
答案 0 :(得分:12)
标记的行和列?这几乎肯定是一个表是正确的事情。
想象一下,一旦用户做出选择并提交了表单,您就会将他们的选择显示给他们。使用表来显示收集的数据显然是正确的,因此使用表来显示收集数据的表单是正确的。
答案 1 :(得分:5)
我建议表格是正确的语义结构,因为复选框的含义由它出现的行和列决定。
想想你将如何显示这组1和0:你会在表格中做到这一点。您所做的只是让细胞可编辑。
我比起撰写这篇文章时更加坚信。表格是正确的结构。
答案 2 :(得分:2)
从语义上讲,这个布局在我看来就像一个表,所以如果你真的需要使用这个布局,你应该把它标记为一个表。 (对于标题和选项,使用th,对包含复选框的单元格使用td。)
但是,生成的表单将非常难以使用。这些文本都不适合用作每个复选框的标签,因此用户将被迫查找&单击复选框本身的微小活动区域。
我的建议是使用两组选项,如下:
<fieldset><legend>Title 1</legend>
<input type="checkbox" id="t1o1"><label for="t1o1">Option 1</label>
<input type="checkbox" id="t1o2"><label for="t1o2">Option 2</label>
...
</fieldset>
<fieldset><legend>Title 2</legend>
...
<input type="checkbox" id="t3o2"><label for="t2o3">Option 2</label>
<input type="checkbox" id="t2o3"><label for="t2o3">Option 3</label>
</fieldset>
是的,这意味着重复一些文本,这会在某种程度上妨碍可维护性;但是,我认为对于一种形式,可用性应该胜过可维护性。
答案 3 :(得分:-3)
表格是最简单的方法,但我们知道表格应该用于数据。
所以我使用div构造:
+---style="width:XXXpx"--------------------------------------------------+
|+---style="width:100%"-------------------------------------------------+|
|| +class=opt++class=opt+||
|| | title a || title b |||
|| +---------++---------+||
|+----------------------------------------------------------------------+|
|+---style="width:100%"-------------------------------------------------+|
||+----------------------------------------------++class=opt++class=opt+||
||| Option 1 || [x] || [x] |||
||+----------------------------------------------++---------++---------+||
|+----------------------------------------------------------------------+|
| //repeat for every option |
+------------------------------------------------------------------------+
一切都应该进入CSS。 (也是上面的'内联'宽度定义)
.opt {
float:right; width: 10%; /*probably*/ z-index: 99;
/*edit2:*/ position: relative;
}
我不确定这是否有效,我会这样试试。
编辑:啊,这些盒子是“div”,顺便说一句。