纯CSS HTML表格单元格单击时展开/折叠

q7solyqu  于 2022-12-01  发布在  其他
关注(0)|答案(4)|浏览(293)

我承认我对CSS一点也不在行。我知道有很多类似的问题和例子,但是尽管我做了很多尝试,我还是不能用我的例子做任何事情。非常感谢你的帮助。
请看这把小提琴:http://jsfiddle.net/4h75G/2/
如果您将鼠标悬停在底部表格中的“Data 1,1”单元格上,它会自动展开以显示整个单元格内容。但是,我希望能够做的不是让它在悬停时展开,而是能够单击一次以展开单元格,然后单击第二次以将其收缩/折叠回原始状态。我希望仅使用CSS而不使用Javascript来完成此操作。
谢谢你!
于飞:

<table>

    <tr>
    <th>Column1</th>
    <th>Column2</th>
    <th>Column3</th>
    </tr>

    <tr>
    <td>Data1,1</td>
    <td>Data2,1</td>
    <td>Data3,1</td>
    </tr>

    <tr>
    <td>Data1,2</td>
    <td>Data2,2</td>
    <td>Data3,2</td>
    </tr>

    <tr>
    <td>Data1,3</td>
    <td>Data2,3</td>
    <td>Data3,3</td>
    </tr>

    </table>
    </br>
    <table>

    <tr>
    <th>Column1</th>
    <th>Column2</th>
    <th>Column3</th>
    </tr>

    <tr>
    <td><div class="content"><span class="hidden">Data1,1 first line - this is a kind-of long line
    <br/>Data1,1 second line - this is a kind-of long line too
    <br/>Data1,1 third line
    <br/>Data1,1 fourth line</span>
    </div>
    </td>
    <td>Data2,1</td>
    <td>Data3,1</td>
    </tr>

    <tr>
    <td>Data1,2</td>
    <td>Data2,2</td>
    <td>Data3,2</td>
    </tr>

    <tr>
    <td>Data1,3</td>
    <td>Data2,3</td>
    <td>Data3,3</td>
    </tr>

    </table>

CSS:

body,table{
        font-family:verdana,arial,sans-serif;
        font-size:12px;
        border-collapse:collapse;
    }

    td,th{
        padding:3px 3px;
        margin:0px;
        border:1px solid #BBB;
        white-space:nowrap;
    }

    .content{
        height:15px;
        width:100px;
        overflow:hidden;
        text-overflow:ellipsis
    }

    .content:hover{
        height:auto;
        width:auto;
    }
dhxwm5r4

dhxwm5r41#

您可以在没有脚本的情况下,通过摆弄隐藏的可以保持状态的css元素(比如一个复选框)来实现类似的功能,但我认为您最好在脚本中简单地切换一个类来实现这一点。
如果你把你的.content Package 在一个标签中,预先挂起一个复选框并隐藏它,如下所示:

input[type='checkbox'] { visibility: hidden; position: absolute; }
input[type='checkbox']:checked + .content { height: auto; width: auto;}

你可以实现你想要的,但它是该死的丑陋。请参阅http://jsfiddle.net/4h75G/13/的例子,这种可疑的做法应用到您的例子。

pprl5pva

pprl5pva2#

我认为你不能没有javascript。
使用jQuery,它可以像下面这样创建-http://jsfiddle.net/4h75G/12/

$(".content").click(function(){
    $(this).toggleClass('active');
});
pgky5nke

pgky5nke3#

我使用的是:

<td><a href='#' onclick="$('#elDiv').slideToggle(200);return false;">+</a></td>

.slideToggle() documentation
希望这对你有帮助!

huwehgph

huwehgph4#

请参阅
第一个
用于HTMl解决方案,其中复选框用于表。关键是使用td内的另一个表。

相关问题