This conditional would read much nicer if you abstracted the visibility checking to a function such as: ```if(isVisible(el)){  }```
Also we have used ```el.getBoundingClientRect()``` do to this in the [article reading tracking](https://github.com/guardian/frontend/blob/master/common/app/assets/javascripts/modules/analytics/reading.js#L64), but don't know if its cleaner or faster.