js获取精确的元素宽高(普通获取高度会有误差)

时间:2022-06-26 23:52:48

当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