将tr堆叠在一张桌子中

时间:2018-12-18 15:17:04

标签: css

我正在尝试使用z-index将tr堆叠在一个表中,但是没有运气。我无法更改/添加到结构本身,因此除非绑定了普通的javascript或CSS,否则我的双手会被束缚住。在我的情况下,我需要第三个tr排在前2个tr的后面。

table {
  position: relative;
  z-index: 100;
}

table tr:nth-child(3) {
  position: relative;
  z-index: 1;
}

table tr:nth-child(1),
table tr:nth-child(2) {
  position: fixed;
  z-index: 100;
}
<table>
  <tr>
    <td>
      // Content
    </td>
  </tr>
  <tr>
    <td>
      // Content
    </td>
  </tr>
  <tr>
    <td>
      // Content needs to flow behind the other two on scrolling
    </td>
  </tr>
</table>

3 个答案:

答案 0 :(得分:0)

除非我理解错误的问题,否则我认为这是您想要实现的目标?

https://codepen.io/littlefinger42/pen/vvXbPZ

我还没有更改您的任何CSS,但是我已经更正了您的HTML。 <tr>元素需要<td><tr>作为子元素。

答案 1 :(得分:0)

尝试将您的内容放入td:

<style type="text/css">
    table {
        position: relative;
        z-index: 100;
    }

        table tr:nth-child(3) {
            position: relative;
            z-index: 1;
        }

        table tr:nth-child(1), table tr:nth-child(2) {
            position: fixed;
            z-index: 100;
        }
</style>
 <table>
        <tr>
            <td>
                // Content
            </td>
           
        </tr>
        <tr><td>
    // Content
</td>
           
        </tr>
        <tr> <td>
    // Content needs to flow behind the other two on scrolling
</td>
           
        </tr>
    </table>

答案 2 :(得分:0)

表的样式有点棘手,因为它们不是大多数html一样的典型display: block元素。相反,它们默认为display: table, table-row, table-cell

为了使z-index分层起作用,您需要给<tr>加上display: block,并确保包括<td><tr>中,以便保持事物的语义。这样您就可以实现您想要做的事情。

table{ }
table tr { position: relative; display: block; z-index: 1; }

table tr:nth-child(1) 	{ background: yellow; }
table tr:nth-child(2)	{ background: skyblue; }
table tr:nth-child(3)	{ background: lime; z-index: -1; transform: translateY(-50%); }
<table>
    <tr>
        <td>td// Content</td>
    </tr>
    <tr>
        <td>td// Content</td>
    </tr>
    <tr>
        <td>// Content needs to flow behind the other two on scrolling</td>
    </tr>
</table>