如何知道元素何时会离开屏幕
How to know when an element will be off screen?
我正在编写一个简单的脚本,当用户悬停在个人资料图片上时,该脚本会显示一个对话框。它动态地确定配置文件图片在页面上的位置,然后将自己放在页面的左边,大约100px。这部分工作得很好。
当一个个人资料图片位于屏幕顶部,用户将鼠标悬停在上面时,我的问题就出现了。对话框会出现,但它的顶部会在折叠上方(即不在当前浏览器窗口中)。当然,这不是很好的可用性,我希望它能出现在屏幕上。
我的问题是,我如何知道对话框何时会离开屏幕,以便重新计算它在页面上的位置?
我看到了这个问题,看起来和我的问题一样,但不幸的是,除了链接到jQuery插件之外,没有提供实际的解决方案。我正在使用Prototype。
Prototype已经提供了Element.viewportOffset()
的位置。
编辑,正如Mathew所指出的,document.viewport
提供了其余信息。例如,
var dialogtop = dialog.viewportOffset().top;
if (dialogtop < 0) {
// above top of screen
}
elseif (dialogtop + dialog.getHeight > document.viewport.getHeight()) {
// below bottom of screen
}
您需要找到配置文件图片相对于文档的位置(这是一篇关于如何处理的好文章,尽管我怀疑Prototype的Element.Offset
已经处理过了),然后将其与主体的scrollTop
属性进行比较,看看它是否离顶部足够近,需要重新定位对话框。
我很熟悉这个问题,但上次我能够使用库(Seadragon)来获取屏幕尺寸和鼠标位置。我还使用了一个固定大小的覆盖,所以除了通用方法之外,没有其他代码可以与您共享。
对于我的弹出框,我决定使用事件鼠标的位置,而不是页面上div的位置。然后,我将鼠标位置与已知的屏幕大小进行了比较,这是我在启动或调整大小时确定的。
如何使用Prototype.js获取浏览器窗口的大小?
var viewport = document.viewport.getDimensions(); // Gets the viewport as an object literal
var width = viewport.width; // Usable window width
var height = viewport.height; // Usable window height
在Prototype中,您还可以获得鼠标坐标:
function getcords(e){
mouseX = Event.pointerX(e);
mouseY = Event.pointerY(e);
//for testing put the mouse cords in a div for testing purposes
$('debug').innerHTML = 'mouseX:' + mouseX + '-- mouseY:' + mouseY;
}
来源:http://remorse.nl/2008/06/mouse_coordinates_with_prototype/
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- D3 - 如何确定元素何时离开屏幕
- Javascript,检查元素是否已离开屏幕
- 当光标离开屏幕时,游戏不会't以Javascript结尾
- CSS包含+的位置部分离开屏幕
- 检测下拉导航是否会离开屏幕并重新定位
- VueJS & Laravel,在用户离开屏幕时发出后请求
- 我不希望我的“播放器”离开屏幕,我该如何防止这种情况
- 让用户通过网站离开他的屏幕保护程序
- jQuery或JS,使元素离开屏幕底部并在顶部输入
- 图像旋转到宽离开我的屏幕如何保持静态或缩短宽度
- 如何将光标设置为离开屏幕
- 当手指离开屏幕上的对象时进行检测
- 检查元素是否离开屏幕的右边缘
- jQuery -如何监听鼠标离开屏幕的区域
- 隐藏列表元素,如果他们离开屏幕
- 如何创建一个永远不会离开屏幕的html工具提示
- 如何知道元素何时会离开屏幕
- 当jquery-ui-draggable的父项在排序过程中隐藏在屏幕之外时,光标会离开该排序项