- From: Ryosuke Niwa via GitHub <sysbot+gh@w3.org>
- Date: Wed, 14 Dec 2016 08:24:09 +0000
- To: public-css-archive@w3.org
@TakayoshiKochi: Something along the line of the code below should do
the trick. Basically, you want to walk up the tree up until the
“retargeted” `offsetParent`, and return `offsetParent` of a node
assigned to the deepest slot that’s different from the original
`offsetParent`. **Note**: I didn’t think through every edge case so
the code’s mostly certainly a bug in the code.
```
function composedParentNode(node) {
let offsetParent = node.offsetParent;
let ancestor = node;
let foundInsideSlot = false;
while (ancestor && ancestor != offsetParent) {
let assignedSlot = ancestor.assignedSlot;
if (assignedSlot) {
ancestor = assignedSlot;
let newOffsetParent = assignedSlot.offsetParent;
if (offsetParent != newOffsetParent)
foundInsideSlot = true;
} else if (ancestor.host && foundInsideSlot)
break;
ancestor = ancestor.host || ancestor.parentNode;
}
return offsetParent;
}
```
--
GitHub Notification of comment by rniwa
Please view or discuss this issue at
https://github.com/w3c/csswg-drafts/issues/159#issuecomment-266972341
using your GitHub account
Received on Wednesday, 14 December 2016 08:24:15 UTC