dom
dom copied to clipboard
Proposal: elementsFromRect()
What problem are you trying to solve?
elementsFromPoint() allows us to utilize the browsers hit-testing get all elements under a specific coordinate. This is great for things like interactive editors that use DOM elements as the editable objects.
But such editors often have other kinds of selection gestures than just a single click that selects at a single coordinate. Often we'll have click-and-drag gestures for selecting all elements under a rectangular window. Some editors will have a lasso tool that lets users draw an irregular selection window. elementsFromPoint() is insufficient for these cases.
What solutions exist today?
There are two rough approaches I know of for finding all elements under a rect:
-
Call
elementsFromPoint()repeatedly in a grid pattern. This uses the native hit-testing mechanism, but it can obviously miss elements that fall between the grid points. -
Re-implement hit testing and crawl the entire DOM looking for intersecting elements. This is very difficult and prone to error.
How would you solve it?
Add elementsFromRect() (and possibly elementsFromPath()) that return all elements intersecting the given rect.
Anything else?
No response
This should be filed against CSSOM View. Once you file it there could you please link it from here and close this?
(Although I'm not sure we should do this until someone actually defines hit testing.)
New issue open here: https://github.com/w3c/csswg-drafts/issues/10398