You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First off, this is not related to the DOM Parts API. This is related to the [part] attribute and ::part() CSS syntax
Essentially, instead of my current structure is
Interpolate (once):
Walk document fragment tree
autogenerate an ID to each node that will be referenced later if non available
Store interpolated fragment
Store References (once per element):
clone interpolated fragment
find to-be-referenced nodes by fragment.getElementById(name)
store reference of nodes
remove ID if it was autogenerated
append clone to ShadowRoot
Render
use node reference list to update DOM
allow attributeChangedCallback to fire
As it stands, there's only one DOM walk needed and it's on interpolation. While getElementById is faster, likely because it's indexed by the browser, than walking the nodes, using an XPath, or querySelector([part="foo"]), it gets convoluted when the ID is needed for anchor destinations (#hash).
Because [part] is "just as unique" as [id], but without the conflict with HTMLAnchorElement, it should be "just as good" as getElementById.
I had considered if this should be on ShadowRoot's prototype, but that would mean you would have to attach it to the ShadowRoot first, before you can find the nodes. There is some value to do more DocumentFragment manipulation before landing on the active document.
Mixing in with DOM-Parts could be interesting, though I'd imagine the API will get renamed before shipping: #902
The text was updated successfully, but these errors were encountered:
Parts are in no way unique, you can have as many parts with the same name as you want:
<style>#wrapper::part(someName) {
color: blue;
}
</style><divid="wrapper"><templateshadowrootmode="closed"><!-- All of these elements will be styled by the ::part(someName) selector --><ppart="someName">Part 1</p><ppart="someName">Part 2</p></template></div>
First off, this is not related to the DOM Parts API. This is related to the [part] attribute and
::part()
CSS syntaxEssentially, instead of my current structure is
Interpolate (once):
Store References (once per element):
Render
As it stands, there's only one DOM walk needed and it's on interpolation. While
getElementById
is faster, likely because it's indexed by the browser, than walking the nodes, using an XPath, orquerySelector([part="foo"])
, it gets convoluted when the ID is needed for anchor destinations (#hash
).Because
[part]
is "just as unique" as[id]
, but without the conflict with HTMLAnchorElement, it should be "just as good" asgetElementById
.I had considered if this should be on
ShadowRoot
's prototype, but that would mean you would have to attach it to theShadowRoot
first, before you can find the nodes. There is some value to do moreDocumentFragment
manipulation before landing on the active document.Mixing in with DOM-Parts could be interesting, though I'd imagine the API will get renamed before shipping: #902
The text was updated successfully, but these errors were encountered: