Look at individual clientRects rather than boundingClientRect...

 ...for overlapping element check; potentially return more than one overlapping element.