我有一个使用HTML / CSS设置的表,它位于UL的LI元素中,正在变成手风琴。问题是,当LI元素被动画化到特定高度时,它会改变表格单元格的高度,使最后一个元素从视图中隐藏。
如果从父LI元素中删除固定高度,则此问题不存在,但这是手风琴功能所必需的。有没有办法确保单元格始终是相同的高度,而不管父容器高度属性?
我已经设置了以下JS Fiddle来显示问题。默认情况下,它会运行折叠功能。如果取下它,您可以在将高度添加到父容器之前查看表格。
由于手风琴默认关闭所有元素,您必须单击标题栏“Table”才能打开表格并查看内容。
以下是希望看到它的人的代码:
HTML:
<ul class="accordion">
<li>
<h3>Table</h3>
<span class="accordionContent">
<table>
<tr class="tableHeader">
<td class="first">HEADER</td>
<td>TITLE<span>SUBTITLE</span>
</td>
<td>TITLE<span>SUBTITLE</span>
</td>
<td class="last">TITLE<span>SUBTITLE</span>
</td>
</tr>
<tr class="tableRow_odd">
<td class="first">ACTIVE ITEM</td>
<td>ACTIVE ITEM</td>
<td>ACTIVE ITEM</td>
<td class="last">ACTIVE ITEM</td>
</tr>
<tr class="tableRow_even">
<td class="first"></td>
<td>ACTIVE ITEM</td>
<td>ACTIVE ITEM</td>
<td class="last"><span class="unavailable">INACTIVE ITEM</span>
</td>
</tr>
<tr class="tableRow_odd">
<td class="first"></td>
<td>ACTIVE ITEM</td>
<td><span class="unavailable">INACTIVE ITEM</span>
</td>
<td class="last"><span class="unavailable">INACTIVE ITEM</span>
</td>
</tr>
<tr class="tableRow_even">
<td class="first"></td>
<td>ACTIVE ITEM</td>
<td><span class="unavailable">INACTIVE ITEM</span>
</td>
<td class="last"><span class="unavailable">INACTIVE ITEM</span>
</td>
</tr>
<tr class="tableRow_odd">
<td class="first"></td>
<td>ACTIVE ITEM</td>
<td><span class="unavailable">INACTIVE ITEM</span>
</td>
<td class="last"><span class="unavailable">INACTIVE ITEM</span>
</td>
</tr>
</table> <span class="itemOverlay"></span></span>
</li>
</ul>
CSS:
body { padding: 15px }
/* Class Setups */
.accordion {
width: 500px;
margin: 0 auto;
overflow: hidden;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
.accordion li {
overflow: hidden;
position: relative;
}
.accordion li h3 {
color: #fff;
font-weight: 100;
padding: 7px 0 7px 12px;
border-bottom: 1px solid #4d82ae;
cursor: pointer;
font-size: 19px;
background: #5d8ebd;
/* Old browsers */
background: -moz-linear-gradient(top, #5d8ebd 0%, #659ecb 100%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5d8ebd), color-stop(100%, #659ecb));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #5d8ebd 0%, #659ecb 100%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #5d8ebd 0%, #659ecb 100%);
/* Opera 11.10+ */
background: -ms-linear-gradient(top, #5d8ebd 0%, #659ecb 100%);
/* IE10+ */
background: linear-gradient(to bottom, #5d8ebd 0%, #659ecb 100%);
/* W3C */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5d8ebd', endColorstr='#659ecb', GradientType=0);
/* IE6-9 */
}
.accordionContent a {
display: block;
position: relative;
z-index: 999;
}
.accordionContent > * {
padding: 15px;
width: 100%;
height: 100%;
position: relative;
}
.accordionContent {
display: block;
width: 100%;
height: 100%;
padding: 0;
position: relative;
}
.accordionContent > table {
text-align: center;
padding: 0;
font-family:"Open Sans", sans-serif;
text-shadow: 0px 1px 0px #fff;
filter: dropshadow(color=#fff, offx=0, offy=1);
}
.accordionContent > table td {
vertical-align: middle;
border-right: 2px groove #eee;
font-size: 12px;
}
.accordionContent > table td {
padding: 10px 5px;
font-weight: 400;
}
.accordionContent .itemOverlay {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
background: transparent !important;
padding : 0;
-webkit-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .45);
-khtml-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .45);
-moz-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .45);
-o-box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .45);
box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, .45);
}
.accordionContent > table td span.unavailable {
font-weight: 200;
}
.accordionContent > table td.last {
border-right: none;
}
.accordionContent > table tr.tableRow_even {
background: #eee;
}
.accordionContent > table tr.tableHeader td {
background: #d2d2d2;
color: #282828;
height: 50px;
font-weight: bold;
font-size: 12px;
padding: 0;
}
.accordionContent > table tr.tableHeader td {
}
.accordionContent > table tr.tableHeader td span {
display: block;
font-size: 10px;
}
答案 0 :(得分:2)
我并不完全确定你要做什么,但似乎你希望改变表格中单个单元格的高度,我认为这是不可能的。您可以连续更改高度,但不能更改单个单元格。
要做到这一点,你可以使用list,divs甚至其他混合了一些JS和CSS的html容器。
编辑,修复问题的答案:
删除“身高:100%;” from.accordionContent&gt; *
当在CSS中使用百分比时,浏览器使用父项的高度而不是项目本身的高度(如果我当然没有记错),因此结合overflow:hidden;这会使最后一排年久失修。
答案 1 :(得分:0)
固定!
Css是恶棍。
从 .accordionContent 类中删除高度:100%; 。
看到工作小提琴:
.accordionContent {
display: block;
width: 100%;
/* height: 100%; */
padding: 0;
position: relative;
}