私は、jQueryを多用するWebサイト用のボルトオンツールを提供するプロジェクトに取り組んでいます。プレゼンテーション/デザインは非常に重要です。ブラウザによってコンテンツがオーバーフローしているhtml要素に適用される標準の(醜い)スクロールバーを、見栄えの良いものに置き換えたいと思います。
カスタムスクロールバーを適用し、CSSを介したスタイリングを可能にするjQueryプラグインは多数ありますが、私が試したすべてのプラグインは、同じ問題に悩まされているようです。スクロール可能なコンテンツにテキストフィールドのあるフォームが含まれている場合など、フィールド間をタブで移動してもスクロールバーがアクティブにならず、場合によってはカスタムスクロールバーのレイアウトが完全に台無しになる可能性があります。
私が試したプラグインの2つの例:
http://manos.malihu.gr/jquery-custom-content-scroller http://baijs.nl/tinyscrollbar/
他の人も試しましたが、すべてのデモ/例でコンテンツはプレーンテキストです。私はすでにこれについて多くの検索を行ってきましたが、フォームベースのコンテンツでこれらのプラグインを使用しようとした人はいないようです。
これらのプラグインはすべてほぼ同じように機能しているようで、何が起こっているのか、そしてその理由は正確にわかりますが、他の誰かがこの問題を抱えているか、解決策を見つけたかどうか疑問に思っていますか?
この問題は、次のように簡単に再現できます(tinyscrollbarプラグインを使用)。
これを標準のhtmlテストページに追加します-
CSS:
<style>
#tinyscrollbartest { width: 520px; height: 250px; padding-right: 20px; background-color: #eee; }
#tinyscrollbartest .viewport { width: 500px; height: 200px; overflow: hidden; position: relative; }
#tinyscrollbartest .overview { list-style: none; position: absolute; left: 0; top: 0; }
#tinyscrollbartest .scrollbar { position: relative; float: right; width: 15px; }
#tinyscrollbartest .track { background: #d8eefd; height: 100%; width: 13px; position: relative; padding: 0 1px; }
#tinyscrollbartest .thumb { height: 20px; width: 13px; cursor: pointer; overflow: hidden; position: absolute; top: 0; }
#tinyscrollbartest .thumb .end { overflow: hidden; height: 5px; width: 13px; }
#tinyscrollbartest .thumb, #tinyscrollbartest .thumb .end { background-color: #003d5d; }
#tinyscrollbartest .disable { display: none; }
</style>
HTML:
<div id="tinyscrollbartest">
<div class="scrollbar">
<div class="track">
<div class="thumb">
<div class="end"></div>
</div>
</div>
</div>
<div class="viewport">
<div class="overview">
</p>Here's a text field: <input type="text"/><p>
...
// lots of content to force scrollbar to appear,
// and to push the next field out of sight ..
...
<p>Here's another field: <input type="text"/></p>
</div>
</div>
</div>
プラグインリファレンス(jqueryライブラリなども参照されていると仮定):
<script type="text/javascript" src="scripts/jquery.tinyscrollbar.min.js"></script>
Jqueryコード:
<script type="text/javascript">
$(document).ready(function () {
$('#tinyscrollbartest').tinyscrollbar();
});
</script>
最初のテキストフィールドをクリックしてフォーカスを合わせ、Tabキーを押して次のテキストフィールドに移動し、何が起こるかを確認します。