diff --git a/packages/stage/src/StageCore.ts b/packages/stage/src/StageCore.ts index b0f9e91c..4f97780e 100644 --- a/packages/stage/src/StageCore.ts +++ b/packages/stage/src/StageCore.ts @@ -155,6 +155,8 @@ export default class StageCore extends EventEmitter { this.mask.setLayout(el); this.dr.select(el, event); + this.mask.scrollIntoView(el); + this.selectedDom = el; if (this.renderer.contentWindow) { diff --git a/packages/stage/src/StageMask.ts b/packages/stage/src/StageMask.ts index 86c2b571..333920d7 100644 --- a/packages/stage/src/StageMask.ts +++ b/packages/stage/src/StageMask.ts @@ -173,6 +173,16 @@ export default class StageMask extends Rule { this.setMode(isFixedParent(el) ? Mode.FIXED : Mode.ABSOLUTE); } + public scrollIntoView(el: HTMLElement): void { + if (this.mode === Mode.FIXED) return; + + el.scrollIntoView(); + if (!this.pageScrollParent) return; + this.scrollLeft = this.pageScrollParent.scrollLeft; + this.scrollTop = this.pageScrollParent.scrollTop; + this.scroll(); + } + /** * 销毁实例 */