diff --git a/docs/index.html b/docs/index.html
index 8c78dfd5..ffb7a62d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -4,7 +4,7 @@ route: index
fixed_navbar: true
---
-{% include navbar.html id="Index" fixed=true has_container=true %}
+{% include navbar.html id="Index" fixed=true has_container=true boxed=true transparent=true %}
{% include index/intro.html %}
diff --git a/docs/lib/main.js b/docs/lib/main.js
index a8969d1d..5a433b71 100644
--- a/docs/lib/main.js
+++ b/docs/lib/main.js
@@ -59,7 +59,7 @@ document.addEventListener('DOMContentLoaded', function () {
// Modals
- var $html = document.documentElement;
+ var rootEl = document.documentElement;
var $modals = getAll('.modal');
var $modalButtons = getAll('.modal-button');
var $modalCloses = getAll('.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button');
@@ -69,7 +69,7 @@ document.addEventListener('DOMContentLoaded', function () {
$el.addEventListener('click', function () {
var target = $el.dataset.target;
var $target = document.getElementById(target);
- $html.classList.add('is-clipped');
+ rootEl.classList.add('is-clipped');
$target.classList.add('is-active');
});
});
@@ -92,7 +92,7 @@ document.addEventListener('DOMContentLoaded', function () {
});
function closeModals() {
- $html.classList.remove('is-clipped');
+ rootEl.classList.remove('is-clipped');
$modals.forEach(function ($el) {
$el.classList.remove('is-active');
});
@@ -166,25 +166,93 @@ document.addEventListener('DOMContentLoaded', function () {
return Array.prototype.slice.call(document.querySelectorAll(selector), 0);
}
- var latestKnownScrollY = 0;
- var ticking = false;
+ // Scrolling
- function scrollUpdate() {
- ticking = false;
- // do stuff
- }
+ var navbarEl = document.getElementById('navbar');
+ var navbarBurger = document.getElementById('navbarBurger');
+ var specialShadow = document.getElementById('specialShadow');
+ var navbarHeight = 52;
+ var navbarOpen = false;
+ var pinned = false;
+ var horizon = navbarHeight;
+ var whereYouStoppedScrolling = 0;
+ var threshold = 200;
+ var scrollFactor = 0;
- function onScroll() {
- latestKnownScrollY = window.scrollY;
- scrollRequestTick();
- }
+ navbarBurger.addEventListener('click', function (el) {
+ navbarOpen = !navbarOpen;
- function scrollRequestTick() {
- if (!ticking) {
- requestAnimationFrame(scrollUpdate);
+ if (navbarOpen) {
+ rootEl.classList.add('bd-is-clipped-touch');
+ } else {
+ rootEl.classList.remove('bd-is-clipped-touch');
}
- ticking = true;
+ });
+
+ function upOrDown(lastY, currentY) {
+ if (currentY >= lastY) {
+ return goingDown(currentY);
+ }
+ return goingUp(currentY);
}
- window.addEventListener('scroll', onScroll, false);
+ function goingDown(currentY) {
+ var trigger = navbarHeight;
+ whereYouStoppedScrolling = currentY;
+
+ if (currentY > horizon) {
+ horizon = currentY;
+ }
+
+ translateHeader(currentY);
+ }
+
+ function goingUp(currentY) {
+ var trigger = 0;
+
+ if (currentY < whereYouStoppedScrolling - navbarHeight) {
+ horizon = currentY + navbarHeight;
+ }
+
+ translateHeader(currentY);
+ }
+
+ function constrainDelta(delta) {
+ return Math.max(0, Math.min(delta, navbarHeight));
+ }
+
+ function translateHeader(currentY) {
+ var delta = constrainDelta(Math.abs(currentY - horizon));
+ var translateValue = delta - navbarHeight;
+ var translateFactor = 1 + translateValue / navbarHeight;
+ var navbarStyle = '\n transform: translateY(' + translateValue + 'px);\n ';
+
+ if (currentY > threshold) {
+ scrollFactor = 1;
+ } else {
+ scrollFactor = currentY / threshold;
+ }
+ specialShadow.style.opacity = scrollFactor;
+ specialShadow.style.transform = 'scaleY(' + translateFactor + ')';
+
+ navbarEl.setAttribute('style', navbarStyle);
+ }
+
+ translateHeader(window.scrollY);
+
+ var ticking = false;
+ var lastY = 0;
+ window.addEventListener('scroll', function () {
+ var currentY = window.scrollY;
+
+ if (!ticking) {
+ window.requestAnimationFrame(function () {
+ upOrDown(lastY, currentY);
+ ticking = false;
+ lastY = currentY;
+ });
+ }
+
+ ticking = true;
+ });
});
\ No newline at end of file
diff --git a/docs/love.html b/docs/love.html
index 70a8e015..e8c6c7a2 100644
--- a/docs/love.html
+++ b/docs/love.html
@@ -13,9 +13,7 @@ tweets:
retweets: "0"
---
-
- {% include navbar.html id="LoveHero" %}
-
+{% include navbar.html id="LoveHero" %}
diff --git a/docs/made-with-bulma.html b/docs/made-with-bulma.html
index 5c10158f..9666ccef 100644
--- a/docs/made-with-bulma.html
+++ b/docs/made-with-bulma.html
@@ -41,9 +41,7 @@ images:
{% endcapture %}
-
- {% include navbar.html id="MadeWithBulmaHero" %}
-
+{% include navbar.html id="MadeWithBulmaHero" %}
diff --git a/sass/components/navbar.sass b/sass/components/navbar.sass
index 410b9b01..ed8c7003 100644
--- a/sass/components/navbar.sass
+++ b/sass/components/navbar.sass
@@ -222,6 +222,12 @@ a.navbar-link
box-shadow: 0 -2px 3px rgba($black, 0.1)
&.is-fixed-top-touch
top: 0
+ &.is-fixed-top,
+ &.is-fixed-top-touch
+ .navbar-menu
+ +overflow-touch
+ max-height: calc(100vh - #{$navbar-height})
+ overflow: auto
html.has-navbar-fixed-top-touch
padding-top: $navbar-height
html.has-navbar-fixed-bottom-touch