diff --git a/docs/demos/body-overflow.md b/docs/demos/body-overflow.md
new file mode 100644
index 00000000..6f6f9c48
--- /dev/null
+++ b/docs/demos/body-overflow.md
@@ -0,0 +1,8 @@
+---
+title: Body Overflow
+nav:
+ title: Demo
+ path: /demo
+---
+
+
\ No newline at end of file
diff --git a/docs/examples/body-overflow.tsx b/docs/examples/body-overflow.tsx
new file mode 100644
index 00000000..a1f8b4e8
--- /dev/null
+++ b/docs/examples/body-overflow.tsx
@@ -0,0 +1,63 @@
+/* eslint no-console:0 */
+import Trigger from 'rc-trigger';
+import React from 'react';
+import '../../assets/index.less';
+
+export default () => {
+ return (
+
+
+
+
+ Popup
+
+ }
+ popupStyle={{ boxShadow: '0 0 5px red' }}
+ popupAlign={{
+ points: ['tc', 'bc'],
+ overflow: {
+ shiftX: 50,
+ adjustY: true,
+ },
+ offset: [0, -10],
+ htmlRegion: 'scroll',
+ }}
+ >
+
+ Target
+
+
+
+ );
+};
diff --git a/src/hooks/useAlign.ts b/src/hooks/useAlign.ts
index daabaa18..3f79bb95 100644
--- a/src/hooks/useAlign.ts
+++ b/src/hooks/useAlign.ts
@@ -191,6 +191,10 @@ export default function useAlign(
};
(scrollerList || []).forEach((ele) => {
+ if (ele instanceof HTMLBodyElement) {
+ return;
+ }
+
const eleRect = ele.getBoundingClientRect();
const {
offsetHeight: eleOutHeight,