アップデート
GitHub にレポを作成しました。
https://github.com/yckart/Veil.js
Sargo DaryaとEdward J Paytonに感謝します。
下にスクロールすると上にスライドするヘッダーを作成する必要があり、その逆も同様です。問題は、ジャンプすることです(範囲内にいる場合diff
)0-128
。
問題がどこにあるのかわかりません。これを正しく機能させる方法はありますか?
これまでに行ったことは次のとおりです。http://jsfiddle.net/yckart/rKW3f/
// something simple to get the current scroll direction
// false === down | true === up
var scrollDir = (function (oldOffset, lastOffset, oldDir) {
return function (offset) {
var dir = offset < oldOffset;
if (dir !== oldDir) lastOffset = offset;
oldOffset = offset;
oldDir = dir;
return {dir: dir, last: lastOffset};
};
}());
var header = document.querySelector('header');
var height = header.clientHeight;
addEventListener('scroll', function () {
var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
var dir = scrollDir(scrollY);
var diff = dir.last-scrollY;
var max = Math.max(-height, Math.min(height, diff));
header.style.top = (dir.dir ? max-height : max) + 'px';
});
もう 1 つの問題は、スクロール方向が最初に変更された場合、何も起こらないことです。ただし、これはインターバルなどで修正できます。