所以我在谈论的是:
var els = document.getElementsByClassName("stuff");
for (var i = 0; i < 20; ++i) {
for (var j = 0; j < 2; ++j) {
var el = document.createElement("div");
el.innerHTML = i;
els[j].appendChild(el);
}
}
&#13;
.maintable {
width: 300px;
}
.maincell1,
.maincell2 {
background-color: red;
width: 50%;
height: 100px;
}
.maincell2 {
background-color: blue;
}
.stuff {
display: flex;
flex-wrap: nowrap;
background-color: green;
overflow: scroll;
}
.stuff div {
width: 30px;
height: 30px;
border: 1px solid black;
}
#fixtable {
width: 100%;
height: 100%;
table-layout: fixed;
}
&#13;
<table class="maintable">
<tr>
<td class="maincell1">
<div class="stuff"></div>
</td>
<td class="maincell2"></td>
</tr>
</table>
<br>
<table class="maintable">
<tr>
<td class="maincell1">
<table id="fixtable">
<tr>
<td>
<div class="stuff"></div>
</td>
</tr>
</table>
</td>
<td class="maincell2"></td>
</tr>
</table>
&#13;
正如你在代码片段中看到的那样,第一个flex div延伸出其所在单元格的50%宽度。我知道我可以将主表格布局固定,但我想要另一列的自动增长功能。
为了限制特定单元格中的自动增长,在第二个表格中,我已经在flex div周围包裹了另一个固定表格,它可以按我需要的方式工作。
我的问题是 - 有没有更优雅的方法来做到这一点?因为这很笨重......
答案 0 :(得分:0)
您可以将Flex容器从流中取出而不是嵌套表:
.maincell1, .maincell2 {
position: relative;
}
.stuff.fix {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
这样,单元格内的内容不会影响其宽度。
请注意,规范未定义自动表格布局,因此结果可能不完全可靠。重新考虑使用固定布局可能是一个好主意。
var els = document.getElementsByClassName("stuff");
for (var i = 0; i < 20; ++i) {
for (var j = 0; j < 2; ++j) {
var el = document.createElement("div");
el.innerHTML = i;
els[j].appendChild(el);
}
}
.maintable {
width: 300px;
}
.maincell1,
.maincell2 {
background-color: red;
width: 50%;
height: 100px;
position: relative;
}
.maincell2 {
background-color: blue;
}
.stuff {
display: flex;
flex-wrap: nowrap;
overflow: scroll;
width: 100%;
}
.stuff div {
width: 30px;
height: 30px;
border: 1px solid black;
background-color: green;
}
.stuff.fix {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
align-items: center;
}
<table class="maintable">
<tr>
<td class="maincell1">
<div class="stuff"></div>
</td>
<td class="maincell2"></td>
</tr>
</table>
<br>
<table class="maintable">
<tr>
<td class="maincell1">
<div class="stuff fix"></div>
</td>
<td class="maincell2"></td>
</tr>
</table>