5

我有一张桌子,其中包括:

  1. 第一列是固定的
  2. tfoot的水平滚动条
  3. 隐藏了tbody的水平滚动条。

小提琴:https ://jsfiddle.net/jbeteta/6sxh3gbk/12/

在此处输入图像描述

    $(function() {
              $('#example').DataTable({         
            "fnInitComplete": function () {
                        // Disable scrolling in Head
                        $('.dataTables_scrollHead').css({
                            'overflow-y': 'hidden !important'
                        });

                        // Disable TBODY scroll bars
                        $('.dataTables_scrollBody').css({
                            'overflow-y': 'scroll',
                            'overflow-x': 'hidden',
                            'border': 'none'
                        });

                        // Enable TFOOT scoll bars
                        $('.dataTables_scrollFoot').css('overflow', 'auto');

                        //  Sync TFOOT scrolling with TBODY
                        $('.dataTables_scrollFoot').on('scroll', function () {
                            $('.dataTables_scrollBody').scrollLeft($(this).scrollLeft());
                        });

                    },
                scrollX: true,
                paging: true,
                fixedColumns: {
                  leftColumns: 1
                }
 });
        });

在这种情况下,当您滚动到右侧时,您会看到固定列的最后一行单元格(背景颜色:红色)变得混乱,因为水平<tbody>滚动条被隐藏了。

我的问题:有没有办法纠正这个问题?

顺便说一句:我不得不隐藏<tbody>水平滚动条,因为它没有与<tfoot>滚动条同步。

非常感谢

编辑:在 Chrome 中是一样的:

在此处输入图像描述

4

2 回答 2

2

这是一个部分解决方案。整个设置是不同表格和 div 的巨大组合。出于某种原因,隐藏的滚动条仍然对几个 div 有效,即它们仍然占用空间并在滚动其他元素时做出反应。也许真的,非常小心地尝试和错误在每个元素/容器上进行 CSS-ing 可以解决整体问题,但对我来说,这似乎是预期的浏览器行为,只是“原样”。但是在 webkit-browser 上你可以这样做:

div:not(.dataTables_scrollFoot)::-webkit-scrollbar { 
  display: none; 
}

https://jsfiddle.net/6sxh3gbk/19/

这将有效地禁用注入<div>元素上所有讨厌的隐藏(但不是真正隐藏)滚动条,但将它们保留在我们想要滚动的页脚元素上。

但这仅适用于webkit 浏览器:Chrome、chromium、Safari、Opera 和 Android。

Gecko (mozilla) 曾经有过类似的功能-moz-scrollbars-none,但它已被弃用并被排除在外。AFAIK 有一个永久的呼唤把它带回来。

Edge 也是如此,这个问题还在被提出。Edge 有真正的希望,因为 MS 多次声明 EdgeHTML 旨在与 WebKit 布局引擎完全兼容。

所以一个部分解决方案,可能覆盖 85%,包括所有设备。

于 2017-03-25T03:12:48.473 回答
0

请检查..

  1. 第一列是固定的
  2. tfoot的水平滚动条
  3. 隐藏了tbody的水平滚动条。

这个问题已经解决了。您的答案在下面的链接中给出..

$(function() {
      $('#example').DataTable({         
     scrollY:        "300px",
    scrollX:        true,
    scrollCollapse: true,
    paging:         false,
    fixedColumns:   {
        leftColumns: 1
    }
      });
    });

小提琴

于 2017-03-16T07:25:16.703 回答