【发布时间】:2016-07-12 12:24:07
【问题描述】:
假设我想展示一个 TODO 列表,如下所示:
8:00
Walk the dog!
8:30
Clean the car!
9:20
Rob the bank!
9:21
Run the dog!
22:00
Have a beer!
22:05
虽然我的第一个方法是使用定义列表,但这不是一个很好的选择:
<dl>
<dt>8:00</dt>
<dd>Walk the dog!</dd>
<dt>8:30</dt>
<dd>Clean the car!</dd>
<dt>9:20</dt>
<dd>Rob the bank!</dd>
<dt>9:21</dt>
<dd>Run the dog!</dd>
<dt>22:00</dt>
<dd>Have a beer!</dd>
<dt>22:05</dt>
<!--<dd>Missing element???</dd>-->
</dl>
AFAIK,<dt> 后面必须跟一个或多个 <dd> 标记。但是最后一次(22:05)没有任何(非空)元素跟随它。
此外,从语义上给出的时间点应该与它之前的元素和之后的元素一样多,但是这种关系在这里也丢失了。
是否有任何其他 HTML 标记组合可能更适合此数据?
【问题讨论】:
-
一张好的旧表也可以在这里做——毕竟,你有两个列,一个是东西开始的时间,第二个是东西。如果在最后一个时间点之后没有任何反应,则可以将相应的填充单元格留空。 (在可访问性方面,您还可以在此处为屏幕阅读器用户放置文本,例如“仅此而已”或“一天的活动到此结束” - 并将其隐藏以供用户查看。)
-
@CBroe 我猜是这样,但问题是我不希望时间和任务在同一行(无论是语义上还是视觉上)——交错方面对我来说很重要。为此,我仍然可以使用表格,但是我必须将其所有单元格的一半留空,这似乎有点笨拙...
-
但它们确实在语义上属于一起——或者它们怎么不属于?
-
@CBroe 时间只是时间点。我上面示例中的任务发生在它们之间的间隔内。它们的持续时间取决于它之前的时间(开始时间)和之后的时间(结束时间)。两者都不比另一个更重要。将开始时间放在同一行但将结束时间放在下一个任务的行上会在语义和视觉上造成烦人的不对称 IMO。
-
我认为下一个任务/项目/节目的开始时间意味着当前任务的结束是相当普遍的做法——这种逻辑在世界各地的时间表中都使用,人们知道这是什么意思。试图在语义级别上不惜一切代价偏离清晰的结构可能不是一个好主意。如果你想让它看起来不同,那就另当别论了。
标签: html html-lists markup semantic-markup