我的网页GUI的布局部分由CSS表格驱动。主要是因为我希望“单元格”在任何情况下都具有相同的高度,而不会出现任何与对齐相关的大量麻烦。总体而言,这种方法非常成功。
然而,我遇到了一个问题,即表格中的右侧单元格有时需要一些时间才能呈现,导致左侧单元格暂时占据整个页面宽度。这会产生明显的“闪烁”效果,虽然很小,但有点烦人。所以我决定修复它。
以下是我的页面工作方式的模糊表示:
#tbl { display: table; width: 200px; border: 1px solid black; }
#tbl-row { display: table-row; }
#tbl-col1,
#tbl-col2 { display: table-cell; }
#tbl-col1 { width: 50px; background-color: red; }
#tbl-col2 { background-color: blue; }
<div id="tbl">
<div id="tbl-row">
<div id="tbl-col1">LHS</div>
<div id="tbl-col2">RHS</div>
</div>
</div>
#tbl-col2
添加display: none
指令时,一切都很好,[我希望准确地]模拟浏览器呈现引擎在渲染#tbl-col1
和#tbl-col2
之间的时刻。请注意,尽管我已经给#tbl-col1
设置了宽度,但是它立即占据了表格的100%宽度。我有点理解为什么会发生这种情况:毕竟,我已要求浏览器使表现得像表格一样。但是,在这里这是不可取的。我试图通过插入“spacer”来解决这个问题,希望在右侧被渲染之前,它可以扩展以填充右侧所有空间,但是没有设置宽度。
正如您所看到的,再次隐藏
假设我宁愿修复这个问题而不是完全放弃CSS表格布局,我该怎么办?
或者我必须替换布局,甚至更糟糕的是采用JavaScript方法来解决FoUC吗?
#tbl { display: table; width: 200px; border: 1px solid black; }
#tbl-row { display: table-row; }
#tbl-col1,
#tbl-spc,
#tbl-col2 { display: table-cell; }
#tbl-col1 { width: 50px; background-color: red; }
#tbl-col2 { width: 150px; background-color: blue; }
<div id="tbl">
<div id="tbl-row">
<div id="tbl-col1">LHS</div>
<div id="tbl-spc"></div>
<div id="tbl-col2">RHS</div>
</div>
</div>
#tbl-col2
并没有任何影响:#tbl-col1
仍然占据了整个表格的宽度,而不是我允许的50px。假设我宁愿修复这个问题而不是完全放弃CSS表格布局,我该怎么办?
或者我必须替换布局,甚至更糟糕的是采用JavaScript方法来解决FoUC吗?
min-width
? - Jon Pdisplay: table;
,那么创建列就会变得非常容易,可能类似于这个解决方案。 - maioman