场景及问题:
编辑表格数据后,表格刷新回到顶部,需求是要回到与操作人相关的部分,避免无谓的滚动查找。
思路:
1、在目标行插入元素,作为定位锚点
2、获取目标行和表头之间的距离
3、使容器滚动到相应位置
主要代码:
// 锚点所在的td元素
let dom_tagert = $('#j_target').parent()[0];
if (dom_tagert) { // 如果锚点存在,则继续
// 表头相对于屏幕的top
let top_header = $('.fixed-table-body')[0].getClientRects()[0].top || 0;
// 锚点相对于屏幕的top
let top_target = dom_tagert.getClientRects()[0].top || 0;
// 计算滚动距离,50为表头高度
let scroll_top = top_target - top_header - 50;
// 容器滚动到目标位置
$('.fixed-table-body')[0].scrollTo(0, scroll_top);
}
划重点:
重点是两个原生方法的使用 getClientRects 和 scrollTo。