【发布时间】:2015-12-04 05:32:32
【问题描述】:
在我的项目中,我有一个 display:table-cell 包含一个 css 多列列表。在调整容器大小时,我希望表格调整到其父级宽度,并且表格单元格在调整父级大小时扩大和缩小以适应父级容器。我希望多列列表随着容器宽度的缩小而删除列。这适用于 Firefox、Chrome 和 Safari,但不适用于 IE10+。
给定以下 HTML:
<div class="outer-container">
<div class="inner-container">
<div class="left-cell"></div>
<div class="list-container">
<ul class="columnized-list">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
</div>
</div>
</div>
还有下面的css:
* {
box-sizing: border-box;
}
ul {
list-style-type: none;
}
.outer-container {
border: 1px solid green;
width: 100%;
}
.inner-container {
display: table;
border: 1px solid black;
}
.left-cell {
display: table-cell;
border: 1px dashed blue;
min-width: 5rem;
max-width: 5rem;
}
.list-container {
display: table-cell;
border: 1px dashed red;
}
.columnized-list {
-webkit-columns: 3 10rem;
-moz-columns: 3 10rem;
columns: 3 10rem;
-webkit-column-rule: 1px solid black;
-moz-column-rule: 1px solid black;
column-rule: 1px solid black;
}
我希望当窗口缩小时列表列从 3 下降到 2 到 1。 Firefox、Safari 和 Chrome 的行为都符合我的预期。但是,IE 10+ 不会删除列。
我知道我不是唯一遇到这种情况的人。 CSS-Tricks 的评论者 Todd 描述了the same issue。
我想我可以理解为什么表格单元格正在扩展以填充内容,而 IE 不知道它是否应该缩小列表列或展开表格单元格。
什么是正确的行为? IE 正确吗?还是所有其他浏览器? CSS 规范是否指定了这种情况下的行为?
更重要的是,如何让表格和/或单元格适合表格的容器?
JSFiddle http://jsfiddle.net/kentho_98/y5bdLsgo/9/
更新增加了一些要求。
【问题讨论】:
-
我可以问为什么在没有“display:table”的情况下使用它吗?
-
"display:table" 是由于其他要求。但也许这不是满足其他要求的最佳解决方案,所以我将在另一个问题中询问这个问题。但为了在这里讨论,我们假设它是必需的。
-
好的,我的回答能解决你的问题吗?
-
大声笑,我正在更新问题... :) 请参阅我的 cmets 来回答您的问题。
-
仅供参考,您想要的解决方案需要设置最小/最大宽度,并且由于表格单元格有问题,如果没有设置最大宽度,IE 中会出现一些奇怪的行为,不换行,因此需要使用视口单位而不是百分比。这里有一些关于这个问题的阅读:stackoverflow.com/questions/6426779/…
标签: css multiple-columns internet-explorer-11 internet-explorer-10 css-tables