@@ -5,13 +5,29 @@ var buttonCloseContainer = $(".navigation__button-close-container");
55var navigationButtonClose = $ ( ".navigation__button-close" ) ;
66var scrollPosition = 0 ;
77var scrollBarWidth = 0 ;
8+ var preventDefaultAction = function ( e ) {
9+ e . preventDefault ( ) ;
10+ } ;
811
912
1013$ ( document ) . ready ( function ( ) {
1114 buttonOpenContainer . on ( "click" , openNav ) ;
1215 navigationButtonClose . on ( "click" , closeNav ) ;
1316} ) ;
1417
18+
19+ function stopBodyScrolling ( bool ) {
20+ /**
21+ * Required to stop body scrolling on iOS devices (safari ignores
22+ * body overflow: hidden in css.
23+ */
24+ if ( bool === true ) {
25+ document . body . addEventListener ( "touchmove" , preventDefaultAction , false ) ;
26+ } else {
27+ document . body . removeEventListener ( "touchmove" , preventDefaultAction , false ) ;
28+ }
29+ }
30+
1531function setActiveLink ( ) {
1632 var currentURL = window . location . href ;
1733 $ ( '.navigation__link, .footer__link' ) . each ( function ( ) {
@@ -24,10 +40,11 @@ function setActiveLink() {
2440function openNav ( ) {
2541 scrollPosition = $ ( window ) . scrollTop ( ) ;
2642 scrollBarWidth = ( window . innerWidth - $ ( window ) . width ( ) ) ;
27- $ ( "body" ) . addClass ( "no-scroll" ) ;
43+ $ ( ".body" ) . addClass ( "no-scroll" ) ;
44+ stopBodyScrolling ( true ) ;
2845 // To prevent content from jumping when scrollbar disappears.
2946 $ ( window ) . scrollTop ( scrollPosition ) ;
30- $ ( "body" ) . css ( "padding-right" , scrollBarWidth + "px" ) ;
47+ $ ( ". body" ) . css ( "padding-right" , scrollBarWidth + "px" ) ;
3148 buttonOpenContainer . css ( "pointer-events" , "none" ) ;
3249 buttonOpenContainer . toggle ( 500 , showCloseButton ) ;
3350 hamburgerBar . css ( "background-color" , "transparent" ) ;
@@ -36,9 +53,10 @@ function openNav() {
3653
3754/* Close when someone clicks on the "x" symbol inside the overlay */
3855function closeNav ( ) {
39- $ ( "body" ) . removeClass ( "no-scroll" ) ;
56+ $ ( ".body" ) . removeClass ( "no-scroll" ) ;
57+ stopBodyScrolling ( false ) ;
4058 // To stop content jerking left-right when scrollbar is restored.
41- $ ( "body" ) . css ( "padding-right" , "" ) ;
59+ $ ( ". body" ) . css ( "padding-right" , "" ) ;
4260 hamburgerBar . css ( "background-color" , "#ffffff" ) ;
4361 navigationOverlay . css ( "width" , "0%" ) ;
4462 buttonOpenContainer . css ( "display" , "inline" ) ;
0 commit comments