在计算标题的可变空间时,slickgrid会仔细测量每一列,然后添加1000
。
function getHeadersWidth() {
var headersWidth = 0;
for (var i = 0, ii = columns.length; i < ii; i++) {
var width = columns[i].width;
headersWidth += width;
}
headersWidth += scrollbarDimensions.width;
return Math.max(headersWidth, viewportW) + 1000;
}
当它将它放入DOM中时,这1000用CSS反转出来:
$headers = $("<div class='slick-header-columns' style='left:-1000px' />").appendTo($headerScroller);
您可以查看此实时in this example,只需检查.slick-header-columns
元素。
我想知道的是,为什么?这个css技巧做了什么?
答案 0 :(得分:1)
git bisect
提供了答案:
https://github.com/mleibman/SlickGrid/commit/c299a5628c791a3b3cb390a22312eb2247b07cd5
作者:David Lee
日期:2010年3月12日星期五07:39:02 +0800
评论:
改善列重新排序行为
与jquery-ui 1.8rc3兼容
可以拖动列超出左边缘,可以超出 右边缘,以便可以将列拖到最左边的位置, 即使从列的左边缘到初始的距离 mousedown大于网格左边缘之间的距离 以及最左边一列的中点。
注意:
理由是:
当您使用jQuery UI'sortable'组件重新排序列时,您(用户)可以将列拖到左侧,最左侧的列将移到一旁,为您提供预览重新排序操作的空间:这意味着列0将至少暂时位于负坐标空间(左@columnwidth,右@ppx =左视口边缘)。
由于SlickGrid允许任意宽度的列,可能会在网格生命周期中更改,David Lee(编辑的作者Michael Leibman合并)显然(我假设在这里;我没有检查他的拉取请求或其他源基准)使用10000像素的最坏情况列宽假设(参见c299
提交)为SlickGrid初始化代码提供一个适合所有人的设置/初始化。
当Michael Leibman将此更改为当前-1000px值时,请参阅下一个提交注释。
我有相同的问题已经有一段时间了,无法找到原因 - 早先的git bisect
尝试误导我https://github.com/mleibman/SlickGrid/commit/f2d480ce959b9f8504f718d6f7a825782d488415只会将负偏移量改变十年,而我当时并不知道SlickGrid的内部结构是否能够自信地设置一个合适的git bisect
来追捕这个。 (真正的改变是在SlickGrid 1.x系列中完成的,然后改变了批次代码)
直到现在我自己拿出-1000px并注意到列重新排序变得更糟,git bisect
帮我挖掘了相关的历史记录。
关闭主题:使用git bisect
再次告诉我git认为bad
是'新情况'而git bisect good
代表旧情况:在使用git bisect
时,我必须提醒自己旧情况(当-1000px / -10000px代码不是SlickGrid的一部分时) )至少在我看来是“糟糕”的情况。即git bisect bad
〜'这就像新的情况; git bisect good
〜'这看起来像旧情况'。