Абсолютно позиционированный элемент, который не выходит из области просмотра

0

У меня есть элемент всплывающей подсказки, который отображается при зависании над определенными элементами.

Я хотел бы, чтобы всплывающая подсказка располагалась выше нормального элемента, как ожидалось, но в том случае, когда всплывающая подсказка слишком велика и выходит из окна, мне нужно, чтобы это НЕ произошло.

Как я могу создать элемент, который абсолютно позиционирован и не будет отображаться вне поля зрения?

Изменение: желательно использовать CSS...

  • 0
    Если всплывающая подсказка следует за мышью, тогда просто установите ширину равной ее текущей ширине - половина ширины + пиксели мыши находятся слева или справа.
  • 0
    Я бы предпочел, чтобы его ширина не изменилась. Я должен быть более ясным - дело не в том, что его ширина слишком велика, а в том, что при наведении курсора на элемент, который находится в самом правом / левом / верхнем углу и т. Д. Страницы, всплывающая подсказка отображается за пределами области просмотра.
Показать ещё 2 комментария
Теги:

1 ответ

0

Следуя приведенной здесь идее: Как определить, отображается ли элемент DOM в текущем окне просмотра?

Я получил:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню