summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQuarkPixel <m2462864403@gmail.com>2025-09-18 14:49:16 +0800
committerQuarkPixel <m2462864403@gmail.com>2025-09-18 14:49:16 +0800
commitb66d25addeefbc60b01adbbf86fa2272700266fe (patch)
treefd2ea3ac57826ef44805ce8e25160b3ec774f992 /src
parentf63683dad80437834ee16e89478519a812ced372 (diff)
fix: viewport change causes animation position error
Diffstat (limited to 'src')
-rw-r--r--src/shadow.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/shadow.js b/src/shadow.js
index e36affa..be7eb9c 100644
--- a/src/shadow.js
+++ b/src/shadow.js
@@ -51,10 +51,27 @@ export default class Shadow {
* ============
*/
+ updateOriginalPosition() {
+ const rect = this.original.getBoundingClientRect();
+ this.originalPosition = {
+ top: rect.top + window.scrollY + config.offset.y,
+ left: rect.left + window.scrollX + config.offset.x,
+ width: rect.width,
+ height: rect.height,
+ };
+ }
+
open() {
this.isOpen = true;
this.element.classList.add('open');
+ // Update original position before animation in case viewport changed
+ this.updateOriginalPosition();
+ this.element.style.top = `${this.originalPosition.top}px`;
+ this.element.style.left = `${this.originalPosition.left}px`;
+ this.element.style.width = `${this.originalPosition.width}px`;
+ this.element.style.height = `${this.originalPosition.height}px`;
+
this.original.style.visibility = 'hidden';
if (!document.body.contains(this.element)) this.placeItself();