Commit 1635ec373c4f9f8f7c4f25dc2c548a4a1a072f79
1 parent
ed4bb143
fix bug #3792 Page scroll bar problem caused by Modal component
Showing
1 changed file
with
9 additions
and
3 deletions
Show diff stats
src/components/modal/mixins-scrollbar.js
@@ -13,6 +13,10 @@ export default { | @@ -13,6 +13,10 @@ export default { | ||
13 | this.scrollBarWidth = getScrollBarSize(); | 13 | this.scrollBarWidth = getScrollBarSize(); |
14 | } | 14 | } |
15 | }, | 15 | }, |
16 | + checkMaskInVisible () { | ||
17 | + let masks = document.getElementsByClassName('ivu-modal-mask') || []; | ||
18 | + return Array.from(masks).every(m => m.style.display === 'none' || m.classList.contains('fade-leave-to')); | ||
19 | + }, | ||
16 | setScrollBar () { | 20 | setScrollBar () { |
17 | if (this.bodyIsOverflowing && this.scrollBarWidth !== undefined) { | 21 | if (this.bodyIsOverflowing && this.scrollBarWidth !== undefined) { |
18 | document.body.style.paddingRight = `${this.scrollBarWidth}px`; | 22 | document.body.style.paddingRight = `${this.scrollBarWidth}px`; |
@@ -27,8 +31,10 @@ export default { | @@ -27,8 +31,10 @@ export default { | ||
27 | document.body.style.overflow = 'hidden'; | 31 | document.body.style.overflow = 'hidden'; |
28 | }, | 32 | }, |
29 | removeScrollEffect() { | 33 | removeScrollEffect() { |
30 | - document.body.style.overflow = ''; | ||
31 | - this.resetScrollBar(); | 34 | + if (this.checkMaskInVisible()) { |
35 | + document.body.style.overflow = ''; | ||
36 | + this.resetScrollBar(); | ||
37 | + } | ||
32 | } | 38 | } |
33 | } | 39 | } |
34 | -}; | ||
35 | \ No newline at end of file | 40 | \ No newline at end of file |
41 | +}; |