gpt4 book ai didi

javascript - 元素偏移(包括滚动)

转载 作者:行者123 更新时间:2023-11-28 09:46:43 26 4
gpt4 key购买 nike

为了获取元素偏移量,我使用:

function(el) {
if(el && el.parentNode) {
var x = 0;
var y = 0;
while(el) {
x += el.offsetLeft;
y += el.offsetTop;
el = el.offsetParent;
}
return {x: x, y: y};
}
return null;
}

为了获取它的滚动偏移量,我使用:

function(el) {
if(el && el.parentNode) {
var x = 0;
var y = 0;
while(el) {
if(el && el.parentNode) {
x += el.scrollLeft;
y += el.scrollTop;
el = el.parentNode;
} else {
el = null;
}

}
return {x: x, y: y};
}
return null;
}

问题是我不知道如何将这两个函数合并在一起,以便我可以获得元素偏移量,包括页面上完成的任何滚动。设置元素位置时,我通常只需要引用这两个函数,但似乎只获取一个函数中的总偏移量是有意义的。我怎样才能实现这个目标?在一个函数中完成所有这一切是否是一个好主意,或者是否有特定的用例,在没有滚动的情况下获取偏移量是一个好主意?

最佳答案

你的意思是这样的吗?

function f (el) {
var offset = (function(el) {
if(el && el.parentNode) {
var x = 0;
var y = 0;

while(el) {
x += el.offsetLeft;
y += el.offsetTop;
el = el.offsetParent;
}

return {x: x, y: y};
}

return null;
})(el);

var scroll = (function(el) {
if(el && el.parentNode) {
var x = 0;
var y = 0;

while(el) {
if(el && el.parentNode) {
x += el.scrollLeft;
y += el.scrollTop;
el = el.parentNode;
} else {
el = null;
}
}

return {x: x, y: y};
}

return null;
})(el);

return { x: offset.x + scroll.x, y: offset.y + scroll.y }
}

关于javascript - 元素偏移(包括滚动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com