Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取最靠近屏幕中间的元素_Javascript_Jquery - Fatal编程技术网

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
);

“请在此处查看我的提琴:”请将可运行的示例放在此处,现场使用堆栈片段(
[]
工具栏按钮;)。始终确保将示例简化为.will
document.element frompoint(document.offsetWidth/2,document.offsetHeight/2)
work?@alex谢谢alex!这很有效-如果你想写一个答案,我会标记为已回答!