0

我正在使用 js 渲染一个网站,并且想优化我的渲染周期。

当页面元素对用户可见时,有没有办法获取事件?

这种方式延迟渲染元素直到它们可见?

4

3 回答 3

1
 var viewportWidth = jQuery(window).width(),
 viewportHeight = jQuery(window).height(),
 documentScrollTop = jQuery(document).scrollTop(),
 documentScrollLeft = jQuery(document).scrollLeft(),
 minTop = documentScrollTop,
 maxTop = documentScrollTop + viewportHeight,
 minLeft = documentScrollLeft,
 maxLeft = documentScrollLeft + viewportWidth,
 $myElement = jQuery(element), // your element jquery object
 elementOffset = $myElement.offset();
 if (
 (elementOffset.top > minTop && elementOffset.top < maxTop) &&
 (elementOffset.left > minLeft &&elementOffset.left < maxLeft)
  ) {
  alert('element is visible');
  } else {
  alert('element is not visible');
  }
于 2013-03-02T19:50:24.810 回答
1

由于您没有解释您是否正在使用任何特定的库/框架,或者是否有任何特定条件使元素可见,所以我会给您这个:

jQuery $(document).ready() 可以检测整个页面是否已加载。

另一方面,如果元素是 display:none 或 visibility:hidden,或两者兼有或其他,你可以使用 jQuery 是这样的: $('element').is(':visible') 作为条件并在 if 中触发任何内容陈述。

于 2013-03-02T22:14:04.033 回答