javascript - 问题计算表滚动条位置

标签 javascript jquery css html-table

所以我有一个脚本,根据滚动条的位置,在你可以滚动的表格边缘添加一个轻微的阴影,但它有时不起作用。

这是其中的一部分:

  $('table').on('scrollstart scrollstop', function(){
    if($(this).parent().hasClass('table-wrap')){
      var elem = $(this),
        elemBody = elem.find('tbody'),
        elemParent = elem.parent('.table-wrap');
      var scrolled = (elemBody.outerWidth() - elemParent.outerWidth() - elem.scrollLeft());
      if(scrolled === 0){
        elemParent.addClass('left_active');
        elemParent.removeClass('right_active');
      } else if(elem.scrollLeft() === 0) {
        elemParent.removeClass('left_active');
        elemParent.addClass('right_active');
      } else {
        elemParent.addClass('left_active');
        elemParent.addClass('right_active');
      }
    }
  });

这部分有时我必须将“+1”添加到“elem.scrollLeft() --here---); 以使其工作。

var scrolled = (elemBody.outerWidth() - elemParent.outerWidth() - elem.scrollLeft());

但后来我注意到,它在某些表上有帮助,而在其他表上则停止工作。这意味着当我向右滚动时,“right_active”类不会消失。

有什么建议吗?

最佳答案

您是否尝试过在 var scrolled 的计算中包含滚动条宽度?

var scrolled = (elemBody.outerWidth() - elemParent.outerWidth() - elem.scrollLeft());

我认为您在正确的轨道上,但宽度可能不精确,因为 .outerWidth() 不包括滚动条宽度。因此,最大滚动宽度总是大于实际元素宽度。

关于javascript - 问题计算表滚动条位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019982/

相关文章:

javascript - AngularJS 中的简单 dom 操作 - 单击按钮,然后将焦点设置到输入元素

javascript - 表格 UI 设置不正确

jquery - jquery lavalamp 的问题

jquery - 当 slideDown 具有多列和多行时,向下推底部 div

javascript - 使用 jquery 将文本颜色更改为背景颜色

javascript - promise 链和匿名 promise 返回

javascript - 访问 Web 上的 DOM 信息

jquery - 如何使显示:flex work for responsiveness - Bootstrap?

javascript - 表单提交中的 ng-model 和 ng-if

javascript - 停止 ASP.NET 表单(单选按钮列表)内的回发 - 返回 false 且 PreventDefault 不起作用