我试图检测当一个元素,一个jQuery插件使可拖动,移动离开窗口的左边缘。
在on拖动自定义事件中有一个if条件。事件在拖动时触发,但是当元素移出屏幕左边缘时,条件中的警告不会触发。
这让我觉得我的if-condition出了问题。
对我来说,这意味着向左移动,当任何大于0%的东西离开屏幕的左边缘时。
$('#tabViewWindow').pep({
axis:'x',
useCSSTranslation:false,
drag:function(ev, obj){
if(obj.dx>0 && obj.$el.offset().left>$(window).width()*0){
obj.velocityQueue = new Array(5);
alert("left and moving towards off screen");
return false;
}
handleOpacity(ev, obj)
},
});
function handleOpacity(ev, obj){
var opacity = 1 - (parseInt(obj.$el.css('left'))/$(window).width());
obj.$el.css('opacity', opacity);
}
我建议使用element.getBoundingClientRect().left
(这可能与jQuery的offset.left相同),简单地检查元素的边界框是否小于0,因为它已经为浏览器计算了元素所在的页面。如果是这样,您的元素至少部分不在屏幕上。然后,作为第二次检查,如果element.getBoundingClientRect().left + element.getBoundingClientRect().width
小于0,则元素完全不在屏幕上。