2
0
Эх сурвалжийг харах

Added scroll top modifier

When location.hash is used, this modifier changes scroll top
Norio Suzuki 9 жил өмнө
parent
commit
ba1a183fe6
1 өөрчлөгдсөн 31 нэмэгдсэн , 0 устгасан
  1. 31 0
      resource/js/crowi.js

+ 31 - 0
resource/js/crowi.js

@@ -231,6 +231,30 @@ Crowi.userPicture = function (user) {
   }
 };
 
+Crowi.modifyScrollTop = function() {
+  var offset = 10;
+
+  var hash = window.location.hash;
+  if (hash === "") {
+    return;
+  }
+
+  var pageHeader = document.querySelector('#page-header');
+  var pageHeaderRect = pageHeader.getBoundingClientRect();
+
+  var sectionHeader = document.querySelector(hash);
+  if (sectionHeader === null) {
+    return;
+  }
+
+  var sectionHeaderRect = sectionHeader.getBoundingClientRect();
+  if (sectionHeaderRect.top >= pageHeaderRect.bottom) {
+    return;
+  }
+
+  window.scrollTo(0, (window.scrollY - pageHeaderRect.height - offset));
+}
+
 
 //CrowiSearcher = function(path, $el) {
 //  this.$el = $el;
@@ -846,3 +870,10 @@ $(function() {
   // for search
   //
 });
+
+window.addEventListener('load', function(e) {
+  Crowi.modifyScrollTop();
+});
+window.addEventListener('hashchange', function(e) {
+  Crowi.modifyScrollTop();
+});