scrollIntoViewが役立つ場合があります。
の使用にはいくつかの問題がありますscrollIntoView
。
- 選択した要素を画面の一番上までスクロールします。選択した要素をウィンドウの一番上まで押し込むよりも、その上に少しスペースがある方が見栄えが良くなります。相対的な量でスクロールできるscrollByと組み合わせること
scrollIntoView
で、これに対処できます。
- 特定のサイトでは、タブ付きセクションの一部がかなり短いため、たとえば概要セクション (短いセクション) を選択すると、ウィンドウ サイズによっては、タブ パネルを画面の上部までスクロールする余地がありません。ただし、セクションが長くなると、タブ パネルが一番上にスクロールされます。この動作の違いは見栄えがよくありません。
次のようなものを使用して、現在のタブパネルに scrollTo を実装できます。
<ul class="TabbedPanelsTabGroup">
<li id="tabHeaderOverview" class="TabbedPanelsTab" tabindex="0" onclick="document.getElementById('tabHeaderOverview').scrollIntoView()">Overview</li>
<li id="tabHeaderActivity" class="TabbedPanelsTab" tabindex="0" onclick="document.getElementById('tabHeaderActivity').scrollIntoView()">Activity Weeks</li>
<li id="tabHeaderExpeditions" class="TabbedPanelsTab" tabindex="0" onclick="document.getElementById('tabHeaderExpeditions').scrollIntoView()">Expeditions</li>
<li id="tabHeaderTestimonials" class="TabbedPanelsTab TabbedPanelsTabSelected" tabindex="0" onclick="document.getElementById('tabHeaderTestimonials').scrollIntoView()">Testimonials</li>
</ul>
あなたの質問にはjqueryのタグが付けられていますが、それを使用していないようです。jquery は、はるかに強力な一連のスクロール ルーチンを提供します。この jquery デモ ページを参照してください。
編集: Spry には上記のアプローチに問題があるようです: リスト要素に onclick イベントを追加すると、Spry のタブ パネルが壊れます。Spry の使用経験はほとんどありませんが、このSpry.Utilsメソッドは Spry ソリューションの一部のように見えます -
ページにSpryUtilsを含める必要があります。次に、次のような JavaScript を追加する必要があります。
function scrollTabHeader(event)
{
this.scrollIntoView();
// this incorporates the scrollBy mentioned above:
window.scrollBy(0, -10);
}
Spry.Utils.addEventListener("tabHeaderOverview", "click", scrollTabHeader, false);
Spry.Utils.addEventListener("tabHeaderActivity", "click", scrollTabHeader, false);
Spry.Utils.addEventListener("tabHeaderExpeditions", "click", scrollTabHeader, false);
Spry.Utils.addEventListener("tabHeaderTestimonials", "click", scrollTabHeader, false);