我有一个插入“弹出”元素到DOM的脚本。它在点击事件中设置它们相对于鼠标坐标的top
和left
css属性。除了这些“弹出”元素的高度是可变的,它们中的一些超出了浏览器窗口的可视区域之外,它的效果很好。我想避免这一点。如何强制定位元素保持可见的浏览器区域?
这里是我到目前为止
<script type="text/javascript">
$(function() {
$("area").click(function (e) {
e.preventDefault();
var offset = $(this).offset();
var relativeX = e.pageX - offset.left;
var relativeY = e.pageY - offset.top;
// 'responseText' is the "popup" HTML fragment
$.get($(this).attr("href"), function (responseText) {
$(responseText).css({
top: relativeY,
left: relativeX
}).appendTo("#territories");
// Need to be able to determine
// viewable area width and height
// so that I can check if the "popup"
// extends beyond.
$(".popup .close").click(function() {
$(this).closest(".popup").remove();
});
});
});
});
</script>
喜欢这幅画 - 你想如何修复它?把它缩短一点?把它简单地用作边界?翻转另一个方向? – 2010-06-10 18:20:44
基本上我只想'尝试'强制弹出元素的所有外边缘在可见区域内。例如。如果其中一个弹出窗口的底部边缘超出可见区域50px,我想将其移动到顶部-50px。 – jessegavin 2010-06-10 21:09:01