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

diz*_*low 5 html css html-table

诚然,我对CSS并不擅长.我知道那里有类似的问题和例子,但是尽管有很多尝试,我还是无法用我的例子做任何事情.非常感谢您的帮助.

请看一下这个小提琴:http://jsfiddle.net/4h75G/2/

如果将鼠标悬停在底部表格中的"Data1,1"单元格上,它会自动展开以显示整个单元格内容.但是,我希望能够做的而不是将其扩展为悬停,而是能够单击一次以展开单元格,然后再次单击以将其收缩/折叠回其原始状态.我想用CSS而不是Javascript来做这件事.

谢谢!

HTML:

        <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>
Run Code Online (Sandbox Code Playgroud)

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;
    }
Run Code Online (Sandbox Code Playgroud)

tob*_*obi 9

通过摆弄可以保持状态的隐藏的css元素(例如复选框),你可以在没有脚本的情况下实现类似的东西,但我认为你通过简单地在脚本中切换类来做得更好.

如果您将.content标签包裹起来,请在前面添加一个复选框并将其隐藏如下:

input[type='checkbox'] { visibility: hidden; position: absolute; }
input[type='checkbox']:checked + .content { height: auto; width: auto;}
Run Code Online (Sandbox Code Playgroud)

你可以达到你想要的效果,但这真是太可怕了.请参阅http://jsfiddle.net/4h75G/13/,了解适用于您的示例的这种可疑实践的示例.

  • 至少是在滥用概念:)最好在脚本中进行操作,将演示文稿保留在CSS中(而且,较旧的IE不会读取:checked伪选择器),并使标记中没有所有元素与结构/内容无关。如果在要显示的内容上切换类名称(如“ active”或“ expanded”),则会得到更加直观的分隔。 (2认同)