我需要制作一张漂亮的桌子,它可以是多种属性:宽度,高度,边框。
宽度和高度调整到外部容器,其他属性应用于表。
除了IE 11之外,它在所有当前浏览器中都能正常工作。 我已经实现了两个选项,只是table和based on div,两种情况都存在错误。
HTML:
<div class="table">
<div class="row">
<div class="cell"></div>
...
</div>
...
</div>
的CSS:
.table {
display: table;
width: 100%;
height: 100%;
}
.table .row {
display: table-row;
}
.table .cell {
display: table-cell;
text-align: center;
overflow: hidden;
vertical-align: middle;
}
.row.body:nth-child(odd) .cell {
background-color:rgb(156,156,156);
}
.row.body:nth-child(even) .cell {
background-color:rgb(255,255,255);
}
.row:last-of-type .cell:last-of-type {
border-bottom-right-radius:16px;
}
.row:last-of-type .cell:first-of-type {
border-bottom-left-radius:6px;
}
.row .cell:last-of-type{
border-right:3px solid rgb(100,0,0);
}
结果:
如何摆脱或避免这种情况?
为什么不适合手动计算的宽度? 因为表位于可调整大小的容器中,宽度应该动态计算。查看完整的示例......
目前我无法透露相关因素,我认为这可以使用JavaScript动态计算。
上的完整示例答案 0 :(得分:1)
这是IE的错误。
解决此问题的最佳方法是定义一行中每个元素的宽度。
例如:
.table .cell {
display: table-cell;
text-align: center;
overflow: hidden;
vertical-align: middle;
width: /* your desired width in px */
}
当然,不同的细胞会有不同的宽度,所以要自己调整。当然也需要计算。
如果我错了,请纠正我
答案 1 :(得分:1)
这是一个IE错误,在使用以下CSS样式时会发生:
border-radius
border-bottom-left-radius
border-bottom-left-radius
border-top-left-radius
border-top-right-radius
要解决此问题,请尝试在您的浏览器上启用IE10模式,方法是在页面中添加以下元标记<meta http-equiv="X-UA-Compatible" content="IE=10" />
,或尝试使用以下页面声明禁用怪异模式<!DOCTYPE html>