用rowspan修复了第一个表列

发布于 2025-02-07 03:22:11 字数 1815 浏览 0 评论 0原文

我正在使用一个简单的表模板来修复第一列。在许多用例中工作正常,但如果使用“ rowspan”。

HTML:

<table>
  <tbody>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first' rowspan='3'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

CSS:

table td {
  border: 1px solid red;
  background: lightpink;
  min-width: 100px;
  max-width: 100px;
  width: 100px;
  height: 20px;
}

table td.first:nth-child(1) {
  border: 1px solid blue;
  background: lightblue;
  position: relative;
  display: block;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
}

table tbody {
  position: relative;
  display: block; 
  overflow: scroll; 
  width: 500px;
}

table {
  position: relative;
  overflow: hidden; 
  border: 1px solid black;
}

JS(jQuery):

$('tbody').scroll(function(e) { 
  $('td.first:nth-child(1)').css("left", $("tbody").scrollLeft());
});

我需要具有特定宽度的第一列。以及所有其他具有不同宽度的列。 不幸的是,如果使用“ rowspan”,并且每行的第一块TD都设置为“ Display:block”,则它不起作用。

请参阅我的示例: https://jsfiddle.net/zqjcjcjcjc9h0p/2/

I'm using a simple table template to be able to fix the first column. Working fine in many use cases but not in case the 'rowspan' is used.

HTML:

<table>
  <tbody>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first' rowspan='3'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

CSS:

table td {
  border: 1px solid red;
  background: lightpink;
  min-width: 100px;
  max-width: 100px;
  width: 100px;
  height: 20px;
}

table td.first:nth-child(1) {
  border: 1px solid blue;
  background: lightblue;
  position: relative;
  display: block;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
}

table tbody {
  position: relative;
  display: block; 
  overflow: scroll; 
  width: 500px;
}

table {
  position: relative;
  overflow: hidden; 
  border: 1px solid black;
}

JS (jQuery):

$('tbody').scroll(function(e) { 
  $('td.first:nth-child(1)').css("left", $("tbody").scrollLeft());
});

I need to have the first column with a specific width. And all other columns with different width.
Unfortunately it is not working if the 'rowspan' is used and the first TD of each row is set to 'display: block'.

See my example: https://jsfiddle.net/zqjc9h0p/2/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

杀お生予夺 2025-02-14 03:22:11

您可以替换显示:block显示:table-cell

$('tbody').scroll(function(e) { 
  $('td.first:nth-child(1)').css("left", $("tbody").scrollLeft());
});
table td {
  border: 1px solid red;
  background: lightpink;
  min-width: 100px;
  max-width: 100px;
  width: 100px;
  height: 20px;
}

table td.first:nth-child(1) {
  border: 1px solid blue;
  background: lightblue;
  position: relative;
  display: table-cell;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
}

table tbody {
  position: relative;
  display: block; 
  overflow: scroll; 
  width: 500px;
}

table {
  position: relative;
  overflow: hidden; 
  border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first' rowspan='3'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

You can replace display: block with display: table-cell :

$('tbody').scroll(function(e) { 
  $('td.first:nth-child(1)').css("left", $("tbody").scrollLeft());
});
table td {
  border: 1px solid red;
  background: lightpink;
  min-width: 100px;
  max-width: 100px;
  width: 100px;
  height: 20px;
}

table td.first:nth-child(1) {
  border: 1px solid blue;
  background: lightblue;
  position: relative;
  display: table-cell;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
}

table tbody {
  position: relative;
  display: block; 
  overflow: scroll; 
  width: 500px;
}

table {
  position: relative;
  overflow: hidden; 
  border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first' rowspan='3'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td class='first'>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文