私はjQueryに比較的慣れていませんが、これまでのところ私が見たものは好きです。私が望むのは、すべてのブラウザで「position:fixed」が機能するかのように、div(または任意の要素)がページの上部にあることです。
複雑なものは望まない。巨大なCSSハックは望まない。 jQuery(バージョン1.2.6)を使用するだけで十分な場合は好まれますが、jQuery-UI-coreが必要であれば、それでも問題ありません。
$( "#topBar")。scrollFollow();を試しました。 <<.
このHTMLの使用:
<div id="myElement" style="position: absolute">This stays at the top</div>
これは、使用したいJavaScriptです。ウィンドウのスクロールにイベントを添付し、スクロールした限り要素を下に移動します。
$(window).scroll(function() {
$('#myElement').css('top', $(this).scrollTop() + "px");
});
以下のコメントで指摘されているように、スクロールイベントにイベントを添付することはお勧めしません。ユーザーがスクロールすると、LOTが発生し、パフォーマンスの問題が発生する可能性があります。オーバーヘッドを減らすために、Ben Almanの debounce/throttle プラグインで使用することを検討してください。
「position:fixed」をサポートするブラウザの場合、javascript(jQuery)を使用して、スクロール時に位置を「fixed」に変更できます。これにより、ここにリストされている$(window).scroll(function())ソリューションを使用してスクロールするときのびびりがなくなります。
Ben Nadelは、チュートリアルでこれを示しています。 jQueryを使用した場合によっては固定位置要素の作成
綺麗な!あなたの解決策は99%でした...「this.scrollY」の代わりに、「$(window).scrollTop()」を使用しました。さらに良いのは、このソリューションが必要とするのはjQuery1.2.6ライブラリのみであるということです(追加のライブラリは不要です)。
特にそのバージョンが欲しかったのは、それが現在MVCに同梱されているからです。
コードは次のとおりです。
$(document).ready(function() {
$("#topBar").css("position", "absolute");
});
$(window).scroll(function() {
$("#topBar").css("top", $(window).scrollTop() + "px");
});
HTML/CSSアプローチ
JavaScriptをあまり必要としないオプション(および、高速スクロールイベント呼び出しなど、それに伴うすべての問題)を探している場合は、ラッパー<div>
を追加することで同じ動作を実現できます。いくつかのスタイル。次のアプローチを使用すると、スクロールが非常にスムーズになっていることに気づきました(遅れている要素はありません)。
HTML
<div id="wrapper">
<div id="fixed">
[Fixed Content]
</div><!-- /fixed -->
<div id="scroller">
[Scrolling Content]
</div><!-- /scroller -->
</div><!-- /wrapper -->
CSS
#wrapper { position: relative; }
#fixed { position: fixed; top: 0; right: 0; }
#scroller { height: 100px; overflow: auto; }
JS
//Compensate for the scrollbar (otherwise #fixed will be positioned over it).
$(function() {
//Determine the difference in widths between
//the wrapper and the scroller. This value is
//the width of the scroll bar (if any).
var offset = $('#wrapper').width() - $('#scroller').get(0).clientWidth;
//Set the right offset
$('#fixed').css('right', offset + 'px');
});
もちろん、このアプローチは、実行中にコンテンツを取得/失うスクロール領域に対して変更できます(スクロールバーの追加/削除になります)。
IE 6で簡単な解決策を探している人のために、IE 6の位置を処理するプラグインを作成しました。問題を修正し、非常に使いやすいです。 http: //www.fixedie.com/
必要な変更はスクリプトの追加と呼び出しだけであるbelatedpngのシンプルさを模倣するために書きました。
プロジェクトでは、クライアントが別のdivのフローティングボックスを必要とするため、フローティングボックスが親にとどまるように、topではなくmargin-top CSSプロパティを使用します。