Blame view

src/components/modal/mixins-scrollbar.js 1.25 KB
297648f1   梁灏   fixed #1063
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  // used for Modal & $Spin
  import { getScrollBarSize } from '../../utils/assist';
  export default {
      methods: {
          checkScrollBar () {
              let fullWindowWidth = window.innerWidth;
              if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
                  const documentElementRect = document.documentElement.getBoundingClientRect();
                  fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);
              }
              this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;
              if (this.bodyIsOverflowing) {
                  this.scrollBarWidth = getScrollBarSize();
              }
          },
          setScrollBar () {
              if (this.bodyIsOverflowing && this.scrollBarWidth !== undefined) {
                  document.body.style.paddingRight = `${this.scrollBarWidth}px`;
              }
          },
          resetScrollBar () {
              document.body.style.paddingRight = '';
          },
          addScrollEffect () {
              this.checkScrollBar();
              this.setScrollBar();
              document.body.style.overflow = 'hidden';
          },
          removeScrollEffect() {
              document.body.style.overflow = '';
              this.resetScrollBar();
          }
      }
  };