javascript - 响应差距问题

标签 javascript jquery css html

我今天发现了一个与我元素所需类似的问题:Div Table with fixed right column .

这是已经存在的 jquery:

$(function() {
  var scrollingWidth = $('.table').innerWidth();
  var lastWidth = $('.table .wrap .column:last').outerWidth();
  var innerWidth = 0;
  $('.table .column').each(function() {
     innerWidth += $(this).outerWidth();
  });
  var gap = scrollingWidth - innerWidth + lastWidth;
  if(gap > lastWidth) {
    $('.table .wrap .column:last').css('width', gap);
    innerWidth += gap - lastWidth;
  }
  $('.table .wrap2').css('width', innerWidth);
});

我还用所有代码制作了一个 JSfiddle:http://jsfiddle.net/U5Vn2/

那么,开始讨论这个问题:

如果您从不调整 .table 所在窗口的大小,则代码可以完美运行。但是尝试将窗口大小调整为比原来更大(无需再次点击运行),然后代码就会中断。如果您确实点击了运行,那么它会以较大的尺寸运行(当然,除非您将其调整得更大)。

另一个问题是,如果必须出现滚动条,则 jQuery 生成的间隙应该变小。 (为了演示,调整窗口大小,即使它只是间隙空间,您也必须滚动)。这可以修复吗?

今天早上我一直在尝试让它响应更大的尺寸,但我不知道如何修复它。

感谢您的帮助!

最佳答案

这是我对该问题的解决方案:http://jsfiddle.net/znWAX/1/

$(function () {
   var gap, scrollingWidth, innerWidth = 0,
       lastWidth = $('.table .wrap .column:last').outerWidth();
   $('.table .column').each(function () {
       innerWidth += $(this).outerWidth();
   });

   function fixTableColumn() {
       scrollingWidth = $('.table').innerWidth();
       gap = scrollingWidth - innerWidth;
       if (gap > 0) {
           $('.table .wrap .column:last').css('width', gap + lastWidth);
       }
       $('.table .wrap2').css('width', innerWidth + Math.max(0, gap));
   }
   fixTableColumn();

   $(window).resize(function () {
       requestAnimationFrame(fixTableColumn);
   });
);

它的基础是,您需要 Hook window.onresize 事件并执行适当的计算和操作 - 我们实际上只需要计算 innerWidthlastWidth 一次,并且然后在每次调整大小时 - gapscrollingWidth

requestAnimationFrame函数用于流体动画, 您可以在这里找到更多信息:http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/

希望这有帮助。

关于javascript - 响应差距问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221736/

相关文章:

javascript - 如何打印 javascript 对象?

javascript - 如何从另一个函数中调用一个函数的方法

html - 如何增加表格内复选框的大小?

javascript - JQGrid 减少窗口调整大小事件中的列数

javascript - 下载 json 文件并将其导入到您的 firebase 数据库

jquery - JQuery Post 调用中的相对 URL

javascript - 如何在没有双引号的情况下使用 JSONparse

javascript - 将波斯语设置为数据表

javascript - 任何 slider 未加载

css - Safari 和 Chrome 忽略 min-width CSS 属性