Locking the Body Scroll for Modal Overlays in iOS Safari

Inspired by: https://stackoverflow.com/questions/37713970/ios-css-js-overlay-scroll-but-prevent-body-scroll

This approach switches the roles of main content and overlay content when the overlay is open, making the overlay content behave as the main content and vice versa. Therefore, the overlay will use ≤body≥ as a scrolling container so it will preserve all native functionality when scrolling, opposing to scrolling a div with `overflow:auto`.

Improvements:

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt asperiores quas temporibus eligendi, itaque, odit cupiditate? Repellendus blanditiis distinctio ad. Dicta harum quidem, voluptates impedit aspernatur eius modi inventore corrupti.