这不是另一个通用的“用于一般布局的表格与 div 元素”类型的问题,例如“为什么不使用表格进行布局”问题。
我正在做一个时间表/日历项目,我一直认为日历是何时使用表格的一个例子。虽然,在快速浏览 Google 日历的结构后,它似乎由一个表组成,其中包含一个<td>
用于每一列的表,并且在每一列内,一个事件是一个<div>
带有定义列表的内部。
为什么这是有益的?
我自己的想法:
- 当有多个不同长度的事件同时开始时(从相同的开始
<td>
),表格的样式可能会更麻烦,也更紧凑。可能出现不需要的空白。 - 当用户在页面加载后添加事件时更难更新表格,例如使用 JavaScript(因为表格标题的行/列跨度可能必须更改)
- 如果使用表格,将自动匹配 x 轴/顶部标题和单元格的宽度,以及 y 轴/左侧标题和单元格的高度。没有桌子可能很难管理这个。
这有什么关系吗?表格数据是否应该始终存储在实际表中?
以下是Google 日历列的简化示例:
<td> <!-- column -->
<div> <!-- start event -->
<dl>
<dt>START TIME – END TIME </dt>
<dd>EVENT TITLE</dd>
</dl>
</div> <!-- end event -->
</td> <!-- end column -->
下面是一个完整的例子:
<td class="tg-col"> <!-- column td -->
<div id="tgCol0" class="tg-col-eventwrapper" style="height:1008px;margin-bottom:-1008px;"> <!-- column div -->
<div class="tg-gutter">
<div class="ca-evp130 chip " style="top:588px;left:-1px;width:100%;"> <!-- start event div -->
<dl class="cbrd" style="height:35px;border-color:#9FC6E7;background-color:#E4EFF8;color:#777777;">
<dt style="background-color:;">START TIME – END TIME <i class="cic cic-dm cic-rcr" title="Recurring event"> </i></dt>
<dd><span class="evt-lk ca-elp130">EVENT TITLE</span></dd>
<div><!-- start masks -->
<div class="mask mask-top" style="border-color:#9FC6E7;background-color:#E4EFF8;"> </div>
<div class="mask mask-bottom" style="border-color:#9FC6E7;background-color:#E4EFF8;"> </div>
<div class="mask mask-left" style="height:38px;border-color:#9FC6E7;background-color:#E4EFF8;"> </div>
<div class="mask mask-right" style="height:38px;border-color:#9FC6E7;background-color:#E4EFF8;"> </div>
</div><!-- end masks -->
<div class="resizer"> <!-- start resizer -->
<div class="rszr-icon"> </div>
</div> <!-- end resizer -->
</dl>
</div> <!-- end event div -->
</div>
</div> <!-- end column td -->
<div id="tgOver0" class="tg-col-overlaywrapper"></div> <!-- column overlay div -->
</td> <!-- end column td -->
编辑:
不要忘记说明为什么 Google 日历的结构是这样的,例如为什么 Google 日历有一个表格但只将它用于列?