書き込みしようとしているプラグインでスクロールの問題を解決するのが難しいです。スクリーンショットを追加しています。これは、UIをより簡単に記述するのに役立ちます。 JavaScriptを使用したページセクションのナビゲーション
2つのことが起こる必要があります。
1)と、ユーザーがスクロールビューに、セクションでは、「アクティブ」になり、今度は、対応するドットは、同様に「アクティブ」を取得します。前の各ドットは、スクロールしながらアクティブなままでなければなりません。ユーザーがスクロールアップすると、「アクティブ」クラスをドットから削除する必要があります。私はこれを解決する方法がわからないのですか?スクロール方向を検出しますか?現在のコードの外観は次のとおりです。
var _activeSection = function() {
var setActive;
setActive = false;
for (var i = 0, len = sections.length; i < len; i++) {
// Last section, bottom of window
if (!setActive && elementInView(sections[i]) && (window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
sections[i].classList.add('active'); // Add 'active' class when Section is in view and reaches bottom of the viewport
} else if (!setActive && elementInView(sections[i])) {
sections[i].classList.add('active'); // Add 'active' class when Section is in view
setActive = true;
} else {
sections[i].classList.remove('active');
}
}
};
2)これは難しい部分です:スクロールの進行要素(考え方の縦線)です。今、私は正確に各増分を正確に計算する方法を見つけることができません。現在の機能:
var _setScrollProgress = function() {
// How many sections are there?
var sectionCount = (sections.length -1);
// Metrics
var scrollProgress = (scrollTop/root.innerHeight) * 100/sectionCount + '%';// get amount scrolled (in %)
if (settings.position === 'left' || settings.position === 'right') {
highlight.style.height = scrollProgress;
}
};
アイデアやコードスニペットはすばらしいでしょう。私はこのことで私の髪を引き出し始めている。
注:純粋な/バニラのJavascriptソリューションのみ、jQueryはしないでください。
あなたは、スクロールイベントリスナーを使用していますか? https://developer.mozilla.org/en/docs/Web/Events/scroll – Danmoreng
はい、もちろんです。私はプラグインにすべてのコードを含めていません。しかし、はい、絶対に。私はスクロールイベントリスナーとスロットリングも使用しています。 – nfq