當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