Javascript 获取最靠近屏幕中间的元素
尝试获取最靠近屏幕中间的元素。类似的问题已经发布。除非容器中的内容比视图端口大,否则这种方法非常有效。在我的场景中,默认情况下,内容不会超过视口的高度,但有一个功能允许用户添加更多的输入字段,这可能意味着内容超出了视口 当您查看一个元素时,它应该保持在视图中(完全不透明度),直到另一个元素更在视图中,此时,原始元素将变为低不透明度 请看我的小提琴:-一旦你们通过第一个元素的一半,它就会变成低透明度。以下两个函数是我当前用于获取最近元素的函数:Javascript 获取最靠近屏幕中间的元素,javascript,jquery,Javascript,Jquery,尝试获取最靠近屏幕中间的元素。类似的问题已经发布。除非容器中的内容比视图端口大,否则这种方法非常有效。在我的场景中,默认情况下,内容不会超过视口的高度,但有一个功能允许用户添加更多的输入字段,这可能意味着内容超出了视口 当您查看一个元素时,它应该保持在视图中(完全不透明度),直到另一个元素更在视图中,此时,原始元素将变为低不透明度 请看我的小提琴:-一旦你们通过第一个元素的一半,它就会变成低透明度。以下两个函数是我当前用于获取最近元素的函数: // calculate what element
// calculate what element is in middle of viewport
function closest(array, number) {
var num = 0;
for (var i = array.length - 1; i >= 0; i--) {
if (Math.abs(number - array[i].position) < Math.abs(number - array[num].position)) {
num = i;
}
}
return array[num].element;
}
// get positions of all question divs
function getPositions() {
var positions = [];
$('.question').each(function() {
// $(this).removeClass("showing");
positions.push({
position: $(this).position().top,
element: $(this)
});
});
return positions;
}
//计算视口中间的元素
函数最近(数组、数字){
var num=0;
对于(var i=array.length-1;i>=0;i--){
if(Math.abs(number-array[i].position)
很抱歉我的代码一团糟,这是在一个相当大的项目,它不是最容易剪掉的部分
干杯伙计们要扩展我的评论,应该这样做:
const centeredElement = document.elementFromPoint(
document.body.offsetWidth / 2, document.body.offsetHeight / 2
);
“请在此处查看我的提琴:”请将可运行的示例放在此处,现场使用堆栈片段(
[]
工具栏按钮;)。始终确保将示例简化为.willdocument.element frompoint(document.offsetWidth/2,document.offsetHeight/2)
work?@alex谢谢alex!这很有效-如果你想写一个答案,我会标记为已回答!