当box内发生滚动时,判断其内部的某个元素是否在box的可视区内
可以在box的scroll事件中调用
// box可视区,el指定元素
function in_view(box,el) {
if(el instanceof jQuery){
el=el[0]
}
if(box instanceof jQuery){
box=box[0]
}
//是否超过顶部
var overtop = box.scrollTop > (el.offsetTop+el.clientHeight)
//是否低于底部
var overbottom = (box.scrollTop+box.clientHeight)<(el.offsetTop);
//不超过顶部也不低于底部说明在可视区
return !overtop && !overbottom;
}
//返回一组元素els中哪些在box可视区
function which_in_view(box,els) {
var inviewEles=[]
for (var i=0;i<els.length;i++) {
var el = els[i];
if(in_view(box,el)){
inviewEles.push(el)
}
}
return inviewEles
}