绝对定位的元素,不会逃避视口

时间:2013-11-09 14:53:06

标签: javascript jquery css

我有一个工具提示元素,当鼠标悬停在某些元素上时会显示。

我希望工具提示按预期位于正常元素之上,但是在工具提示太大并且逃离窗口的情况下,我不需要这样做。

如何才能拥有一个绝对定位且永远不会显示在视野之外的元素?

编辑:最好使用CSS ...

1 个答案:

答案 0 :(得分:0)

遵循此处提出的想法:How to tell if a DOM element is visible in the current viewport?

我得到了:

function elementInViewport(el) {
  var top = el.offsetTop;
  var left = el.offsetLeft;
  var width = el.offsetWidth;
  var height = el.offsetHeight;

  while(el.offsetParent) {
    el = el.offsetParent;
    top += el.offsetTop;
    left += el.offsetLeft;
  }

  return (
    top >= window.pageYOffset &&
    left >= window.pageXOffset &&
    (top + height) <= (window.pageYOffset + window.innerHeight) &&
    (left + width) <= (window.pageXOffset + window.innerWidth)
  );
}

var tooltip = $(".tooltip");
tooltip.show(); //we must make it visible in order to perform the test on the next line
if(!elementInViewport(tooltip)) {
  tooltip.hide();
}