表格行,你可以设置高度为零?

你可以设置表格行高度为0吗? IE 8,Chrome,Firefox,Opera。 你为什么问!那么,我有一个行,这是一个用户点击父行时动态构建和显示。麻烦的是,如果没有行,单击时它仍然显示一个空的1像素高行。 这是子网格视图:

<asp:TemplateField HeaderStyle-CssClass="hidden-column" ItemStyle-CssClass="hidden-column" FooterStyle-CssClass="hidden-column">
                <ItemTemplate>
                    <tr>
                        <td colspan="8" >
                            <div id='<%# Eval("PublicationID") %>' style="display: none; position: relative;">
                                <asp:GridView ID="GridView2_ABPubs" runat="server" AutoGenerateColumns="false" Width="100%"
                                    DataKeyNames="PublicationID" Font-Names="Verdana" Font-Size="small">
                                    <Columns>
                                        <asp:TemplateField>
                                            <ItemTemplate>
                                                <asp:CheckBox ID="ChildPublicationSelector" runat="server" />
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:BoundField DataField="NameAbbrev" HeaderText="Publication Name" SortExpression="NameAbbrev" />
                                    </Columns>
                                </asp:GridView>
                            </div>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:TemplateField>
CSS:
.hidden-column 
{
    display: none;  
}
JavaScript的:
<script language="JavaScript" type="text/javascript">
    var currentlyOpenedDiv = "";
    function CollapseExpand(object) {
        var div = document.getElementById(object);
        //if (currentlyOpenedDiv != "" && currentlyOpenedDiv != div) {
        //    currentlyOpenedDiv.style.display = "none";
        //}
        if (div.style.display == "none") {
            div.style.display = "inline";
            currentlyOpenedDiv = div;
        }
        else {
            div.style.display = "none";
        }
    }
</script>
已邀请:

lenim

赞同来自:

我认为无论如何,0行高度技巧都无法完美实现 - 使用Firefox和IE时,它在桌面顶部形成了一个更加粗糙的边框。如果你关闭边框,这对你来说可能无关紧要(尽管我认为你仍然会在表格顶部留出一个空白的1像素行)。许多网页设计师在第一行中使用了spacer gif(1x1透明gif,大小适当的宽度)以获得解决这两个问题的相同效果。

ynulla

赞同来自:

你可以通过显示隐藏一行:如果你愿意的话,可以不显示任何内容,但我认为浏览器总是给出一个最小高度为1px的框

est_et

赞同来自:

一个好的起点是设置overflow:隐藏在<td>元素的样式上。

dmodi

赞同来自:

因为我必须有50位代表评论,所以我会发表一个答案。 我认为你想要的东西可以用普通的javascript来完成, 我用过水果的例子。希望你不介意。 点击This Fiddle查看下面的代码。如果这是你想要的。 :) JavaScript的:

$(document).ready(function(){
$(".toggler").click(function(e){
    e.preventDefault();
    $('.fruit'+$(this).attr('data-prod-fruit')).toggle();
});
}); HTML:
<table>
<tr>
    <td>Product</td>
    <td>Price</td>
    <td>Destination</td>
    <td>Updated on</td>
</tr>
<tr>
    <td>Oranges</td>
    <td>100</td>
    <td><a href="#" class="toggler" data-prod-fruit="1">+ On Store</a></td>
    <td>22/10</td>
</tr>
<tr class="fruit1" style="display:none">
    <td></td>
    <td>120</td>
    <td>City 1</td>
    <td>22/10</td>
</tr>
<tr class="fruit1" style="display:none">
    <td></td>
    <td>140</td>
    <td>City 2</td>
    <td>22/10</td>
</tr>
<tr>
    <td>Apples</td>
    <td>100</td>
    <td><a href="#" class="toggler" data-prod-fruit="2">+ On Store</a></td>
    <td>22/10</td>
</tr>
<tr class="fruit2" style="display:none">
    <td></td>
    <td>120</td>
    <td>City 1</td>
    <td>22/10</td>
</tr>
<tr class="fruit2" style="display:none">
    <td></td>
    <td>140</td>
    <td>City 2</td>
    <td>22/10</td>
</tr>
和一些CSS,使它看起来很漂亮:
table{
    border-collapse: collapse;
    border-style: hidden;
    margin:0 auto 0 auto;
    position:relative;
    width:100%;
    font-size:12px;
    background-color:#edf1f7;
}
table td, table th {
    border: 1px solid black;
    height:30px;
}

要回复问题请先登录注册