У меня есть элемент всплывающей подсказки, который отображается при зависании над определенными элементами.
Я хотел бы, чтобы всплывающая подсказка располагалась выше нормального элемента, как ожидалось, но в том случае, когда всплывающая подсказка слишком велика и выходит из окна, мне нужно, чтобы это НЕ произошло.
Как я могу создать элемент, который абсолютно позиционирован и не будет отображаться вне поля зрения?
Изменение: желательно использовать CSS...
Следуя приведенной здесь идее: Как определить, отображается ли элемент 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();
}