@@ -762,13 +762,16 @@ export default {
762
762
const computedStyle = window . getComputedStyle
763
763
const body = document . body
764
764
const scrollbarWidth = this . scrollbarWidth
765
+ this . _marginChangedForScroll = [ ]
766
+ this . _paddingChangedForScroll = [ ]
765
767
// Adjust fixed content padding
766
768
selectAll ( Selector . FIXED_CONTENT ) . forEach ( el => {
767
769
const actualPadding = el . style . paddingRight
768
770
const calculatedPadding = computedStyle ( el ) . paddingRight || 0
769
771
setAttr ( el , 'data-padding-right' , actualPadding )
770
772
el . style . paddingRight = `${ parseFloat ( calculatedPadding ) +
771
773
scrollbarWidth } px`
774
+ this . _paddingChangedForScroll . push ( el )
772
775
} )
773
776
// Adjust sticky content margin
774
777
selectAll ( Selector . STICKY_CONTENT ) . forEach ( el => {
@@ -777,6 +780,7 @@ export default {
777
780
setAttr ( el , 'data-margin-right' , actualMargin )
778
781
el . style . marginRight = `${ parseFloat ( calculatedMargin ) -
779
782
scrollbarWidth } px`
783
+ this . _marginChangedForScroll . push ( el )
780
784
} )
781
785
// Adjust navbar-toggler margin
782
786
selectAll ( Selector . NAVBAR_TOGGLER ) . forEach ( el => {
@@ -785,6 +789,7 @@ export default {
785
789
setAttr ( el , 'data-margin-right' , actualMargin )
786
790
el . style . marginRight = `${ parseFloat ( calculatedMargin ) +
787
791
scrollbarWidth } px`
792
+ this . _marginChangedForScroll . push ( el )
788
793
} )
789
794
// Adjust body padding
790
795
const actualPadding = body . style . paddingRight
@@ -795,27 +800,29 @@ export default {
795
800
}
796
801
} ,
797
802
resetScrollbar ( ) {
798
- // Restore fixed content padding
799
- selectAll ( Selector . FIXED_CONTENT ) . forEach ( el => {
800
- if ( hasAttr ( el , 'data-padding-right' ) ) {
801
- el . style . paddingRight = getAttr ( el , 'data-padding-right' ) || ''
802
- removeAttr ( el , 'data-padding-right' )
803
- }
804
- } )
805
- // Restore sticky content and navbar-toggler margin
806
- selectAll (
807
- `${ Selector . STICKY_CONTENT } , ${ Selector . NAVBAR_TOGGLER } `
808
- ) . forEach ( el => {
809
- if ( hasAttr ( el , 'data-margin-right' ) ) {
810
- el . style . marginRight = getAttr ( el , 'data-margin-right' ) || ''
811
- removeAttr ( el , 'data-margin-right' )
803
+ if ( this . _marginChangedForScroll && this . _paddingChangedForScroll ) {
804
+ // Restore fixed content padding
805
+ this . _paddingChangedForScroll . forEach ( el => {
806
+ if ( hasAttr ( el , 'data-padding-right' ) ) {
807
+ el . style . paddingRight = getAttr ( el , 'data-padding-right' ) || ''
808
+ removeAttr ( el , 'data-padding-right' )
809
+ }
810
+ } )
811
+ // Restore sticky content and navbar-toggler margin
812
+ this . _marginChangedForScroll . forEach ( el => {
813
+ if ( hasAttr ( el , 'data-margin-right' ) ) {
814
+ el . style . marginRight = getAttr ( el , 'data-margin-right' ) || ''
815
+ removeAttr ( el , 'data-margin-right' )
816
+ }
817
+ } )
818
+ this . _paddingChangedForScroll = null
819
+ this . _marginChangedForScroll = null
820
+ // Restore body padding
821
+ const body = document . body
822
+ if ( hasAttr ( body , 'data-padding-right' ) ) {
823
+ body . style . paddingRight = getAttr ( body , 'data-padding-right' ) || ''
824
+ removeAttr ( body , 'data-padding-right' )
812
825
}
813
- } )
814
- // Restore body padding
815
- const body = document . body
816
- if ( hasAttr ( body , 'data-padding-right' ) ) {
817
- body . style . paddingRight = getAttr ( body , 'data-padding-right' ) || ''
818
- removeAttr ( body , 'data-padding-right' )
819
826
}
820
827
}
821
828
} ,
0 commit comments