diff --git a/packages/docs/src/en/plugins/intersect.md b/packages/docs/src/en/plugins/intersect.md index 3176e549f..7f3dcc182 100644 --- a/packages/docs/src/en/plugins/intersect.md +++ b/packages/docs/src/en/plugins/intersect.md @@ -170,3 +170,12 @@ get a pixel value. ```alpine
...
// Mark as visible when element is more than 100 pixels into the viewport. ``` + + +### .parent + +Allows for the underlying `IntersectionObserver` to use the viewport of the parent element, rather than the default, which is the browser. + +```alpine +
...
// Mark as shown when element is moves inside it's parents viewport. +``` diff --git a/packages/intersect/src/index.js b/packages/intersect/src/index.js index f955c4fce..b1f845cfd 100644 --- a/packages/intersect/src/index.js +++ b/packages/intersect/src/index.js @@ -5,6 +5,7 @@ export default function (Alpine) { let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshold(modifiers), + root: modifiers.includes('parent') ? el.parentElement : null } let observer = new IntersectionObserver(entries => {