diff --git a/build/Table.js b/build/Table.js index 0cdd77f..ad15c2c 100644 --- a/build/Table.js +++ b/build/Table.js @@ -487,11 +487,27 @@ var Table = function (_Component) { if (prevScrollY && currentScrollY && prevScrollY !== currentScrollY && this.props.lazyLoad && !this.props.ignoreScrollYChange) { this.bodyTable.scrollTop = 0; } else if (this.props.ignoreScrollYChange && currentScrollY && prevScrollY && prevScrollY !== currentScrollY) { - var distance = this.bodyTable.scrollTop + (currentScrollY - prevScrollY); - if (distance < 0) { + var bodyScrollTop = this.bodyTable.scrollTop; + if (bodyScrollTop === 0) { + // 在顶部的时候,滚动条不用动 this.bodyTable.scrollTop = 0; } else { - this.bodyTable.scrollTop = distance; + var distance = bodyScrollTop + currentScrollY - prevScrollY; + if (distance < 0) { + this.bodyTable.scrollTop = 0; + } else { + var _bodyTable = this.bodyTable, + scrollHeight = _bodyTable.scrollHeight, + scrollTop = _bodyTable.scrollTop; + + var bottomDistance = Math.abs(scrollHeight - scrollTop - prevScrollY); // 在最底部的时候也不用滚动滚动条 + if (bottomDistance < 5) { + // 有些dom计算不是十分精确,设置一个值来缓冲一下 + this.bodyTable.scrollTop = scrollTop + prevScrollY - currentScrollY; + } else { + this.bodyTable.scrollTop = distance; + } + } } } // 是否传入 scroll中的y属性,如果传入判断是否是整数,如果是则进行比较 。bodyTable 的clientHeight进行判断 diff --git a/package.json b/package.json index df701dd..ed54056 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bee-table", - "version": "2.3.15-beta.2", + "version": "2.3.15-beta.3", "description": "Table ui component for react", "keywords": [ "react",