当js获取元素宽高时, 并不是一个精确的数字,如果想获取真正的宽高大致方法如下
var oStyle = obj.currentStyle ? obj.currentStyle : window.getComputedStyle(obj, null); var realheight=parseFloat(oStyle.height));
发现这个问题来自于jqGrid的固定列问题,当屏幕分辨率比例非100%的时候,dom元素的宽高可能会出现小数,这时候如果用clientHeight或者jq的outerHeight都无法获取小数部分,从而导致固定列出现错位的情况,大致解决方法如下:
setFrozenColumns->jqGridAfterGridComplete.setFrozenColumns 方法下:
$("#" + $.jgrid.jqID($t.p.id) + " tr[role=row].jqgrow").each(function () { //20181229 bear.Tirisfal fixed forzenCol pixel percent height problem var oStyle = this.currentStyle ? this.currentStyle : window.getComputedStyle(this, null); mh.push(parseFloat(oStyle.height)); });
当然也可以统一两者的高度来解决问题。
当固定列的宽度出现错位的情况,需要统一原始表格和固定列的宽,也就是 1px