修复引导表的第一列

Posted

技术标签:

【中文标题】修复引导表的第一列【英文标题】:Fix First Column of a Bootstrap Table 【发布时间】:2015-08-07 13:36:23 【问题描述】:

我按照@koala_dev 在this post 中的代码尝试锁定我的表格水平滚动的第一列。不幸的是,该代码对我的桌子没有影响。我想知道是否有人可以给我一些关于我做错了什么的指示,因为我是编程新手。

这是我的桌子: http://jsfiddle.net/mademoiselletse/bypbqboe/59/

这是我在 JS 中插入的代码(第 121-133 行):

$(function() 
    var $tableClass = $('.table');
    // Make a clone of our table
    var $fixedColumn = $tableClass.clone().insertBefore($tableClass).addClass('fixed-column');

    // Remove everything except for first column
    $fixedColumn.find('th:not(:first-child),td:not(:first-child)').remove();

    // Match the height of the rows to that of the original table's
    $fixedColumn.find('tr').each(function(i, elem) 
      $(this).height($tableClass.find('tr:eq(' + i + ')').height());
    );
);

这是我插入的 CSS 属性(第 36-47 行):

.table-responsive > .fixed-column 
   position: absolute;
   display: inline-block;
   width: auto;
   border-right: 1px solid #ddd;


@media(min-width:768px) 
    .table-responsive>.fixed-column 
        display: none;
    

我唯一与demo code 不同的是,我将$('.table') 定义为$tableClass 而不是$table,因为我之前将var $table 定义为$('#table')。非常感谢您的帮助!

【问题讨论】:

在您的演示中有这一行 var $tableClass = $('.table'); 即您正在尝试获取您的表对象,但您已将 tableid 指定为 table 而不是classNametable 感谢您的指出!我用 ID 引用了表格,但我得到了这个:jsfiddle.net/mademoiselletse/bypbqboe/62 你能给我一些暗示为什么会这样吗? 你的代码很混乱!!你为什么要克隆table,为什么要删除除第一个之外的所有table datatable head?? 因为我想在表格向右滚动时锁定第一列,因为我有很多列,就像这个人所做的那样:jsfiddle.net/4XG7T/3 是的,我明白了!但是你可以用css 来做,对吗?为什么cloning 并再次插入等等?? 【参考方案1】:

只需将position:sticky 添加到th & td first-child

th:first-child, td:first-child

  position:sticky;
  left:0px;
  background-color:grey;
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<table class="table">
  <tr>
    <th>TIME</th>
    <th>Company</th>
    <th>Company</th>
    <th>Company</th>
    <th>Company</th>
    <th>Company</th>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
   <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>11:40   </td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>

【讨论】:

伟大的。但是如果表格具有table-bordered 类,如何修复左边框,以便滚动显示边框像素后面的文本。参考:jsfiddle.net/mpsbhat/hq9f4Lws【参考方案2】:

好的.. 删除你所有的js 代码,你可以使用一些 CSS 技巧来做到这一点,如下所示:

DEMO

CSS

.table > thead:first-child > tr:first-child > th:first-child 
    position: absolute;
    display: inline-block;
    background-color: red;
    height: 100%;


.table > tbody > tr > td:first-child 
    position: absolute;
    display: inline-block;
    background-color: red;
    height: 100%;


.table > thead:first-child > tr:first-child > th:nth-child(2) 
    padding-left: 40px;


.table > tbody > tr > td:nth-child(2) 
    padding-left: 50px !important;

【讨论】:

太棒了!非常感谢! 这是一个出色的纯 CSS 解决方案,它击败了其他参考帖子中的 JS 和 CSS 混乱。 ?? @ShekharPankaj。抱歉,但我看到它还在工作。你能告诉我什么不工作吗...? (不能格式化,反引号是换行符)只有以下部分对我来说足够好(使用引导表插件):``/* making sure all rows are padded ahead of the fixed column*/.table &gt; thead &gt; tr &gt; th padding-left: 40px !important;``@987654328 @.table &gt; tbody &gt; tr &gt; td:first-child position: absolute;width: 40px;`` 演示似乎不适合我;假设 getData 按钮应该填充表格?【参考方案3】:

以下样式将创建一个固定第一列的剥离表:

th:first-child, td:first-child
    position: sticky;
    left: 0px;
    z-index: 1;

tr:nth-child(odd) > td
    background-color: #ededed;

tr:nth-child(even) > td
    background-color: #e2e2e2;

tr:nth-child(odd) > th
    background-color: #d7d7d7;

【讨论】:

【参考方案4】:

$('#table') 表示您通过 id table 查找元素。

$('.table') 表示您按类查找元素table

这些是您在 css 中使用的 CSS 选择器。

在您的情况下,您的表的 ID 为 table,因此您可以使用 $('#table') 选择该表。

而且您没有任何使用table 类的html 元素,因此当您选择使用$('.table') 时,您将一无所获。

【讨论】:

感谢您指出我没有 table 课程。我意识到我把table 放在data-class 里面。我听从了您的建议并通过其 ID 引用了该表,但我得到了这个:jsfiddle.net/mademoiselletse/bypbqboe/62 我的代码是否冲突?

以上是关于修复引导表的第一列的主要内容,如果未能解决你的问题,请参考以下文章

MBR扇区故障修复

CentOS7 修复MBR 扇区故障

CentOS6.2修复Grub引导

选择具有行跨度的表的第一列

oracle查询怎么多个表的第一列

CentOS7 修复GRUB 引导故障