Skip to content
This repository was archived by the owner on Nov 13, 2023. It is now read-only.

Commit e62fc8f

Browse files
committed
improving scrolling behaviour; reverting to original scroll height when modal closed
1 parent 0087501 commit e62fc8f

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

modal.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function escapeModal() {
2-
const currentVisibility = document.getElementById("modal").classList;
2+
const currentModalVisibility = document.getElementById("modal").classList;
33
document.addEventListener("keydown", function (event) {
4-
if (event.key === "Escape" && currentVisibility.contains("d-none") == false) {
4+
if (event.key === "Escape" && currentModalVisibility.contains("d-none") == false) {
55
toggleModal();
66
}
77
})
@@ -23,19 +23,36 @@ function removeModalContent() {
2323
modalContent.innerHTML = "";
2424
}
2525

26-
function toggleModal() {
26+
function saveStartingScrollHeight() {
27+
const startingScrollHeight = window.pageYOffset;
28+
const main = document.getElementById("main");
29+
main.dataset.scrollHeight = startingScrollHeight;
30+
}
31+
32+
function revertToStartingScrollHeight() {
33+
const main = document.getElementById("main");
34+
const startingScrollHeight = main.dataset.scrollHeight;
35+
window.scrollTo(0, startingScrollHeight);
36+
delete main.dataset.scrollHeight;
37+
}
38+
2739

28-
const currentVisibility = document.getElementById("modal").classList;
40+
function toggleModal() {
41+
const currentModalVisibility = document.getElementById("modal").classList;
2942
const mainLayerClasses = document.getElementById("main").classList;
3043

31-
if (currentVisibility.contains("d-none")) {
32-
currentVisibility.remove("d-none");
44+
if (currentModalVisibility.contains("d-none")) {
45+
saveStartingScrollHeight();
46+
currentModalVisibility.remove("d-none");
3347
mainLayerClasses.add("position-fixed")
48+
currentModalVisibility.add("open");
3449
attachModalListeners();
3550
removeModalContent();
3651
}
3752
else {
38-
currentVisibility.add("d-none");
53+
revertToStartingScrollHeight();
54+
currentModalVisibility.add("d-none");
55+
currentModalVisibility.remove("open");
3956
mainLayerClasses.remove("position-fixed")
4057
detachModalListeners();
4158
}

0 commit comments

Comments
 (0)