el.getBoundingClientRect()
http://output.jsbin.com/rasaso
desktop: 1000 ops = 3-5ms mobile: 1000 ops = 30ms (busts 60fps limit)
1,000,000 ops = 1573ms (desktop) 17000+ms (mobile)
ie should put a warning about calling this too much on mobile, but it's pretty solid for desktop.