31

次のCSSでdiv.scroll_fixedを持っています

.scroll_fixed {
    position:absolute
    top:210px

}
.scroll_fixed.fixed {
    position:fixed;
    top:0;
} 

次の jQuery コードを使用して、div がページの上部に到達したときに .fixed クラスを設定しています。

var top = $('.scroll_fixed').offset().top - parseFloat($('.scroll_fixed').css('margin-top').replace(/auto/, 0));

$(window).scroll(function (event) {
    // what the y position of the scroll is
    var y = $(this).scrollTop();

    // whether that's below the form
    if (y >= top) {
        // if so, ad the fixed class
        $('.scroll_fixed').addClass('fixed');
    } else {
        // otherwise remove it
        $('.scroll_fixed').removeClass('fixed');
    }
});

これは、垂直スクロールの修正に最適です。しかし、ブラウザー ウィンドウが小さい場合、水平スクロールを行うと、この固定 div の右側にあるコンテンツと衝突が発生します。

コンテンツを水平方向にスクロールする div が必要です。

誰かが私を正しい方向に向けることができますか?まだ JS/JQuery に慣れていません。

基本的に、この例の 2 番目のボックスのように機能するようにしたいと考えています。

4

3 に答える 3

23

デモでは、要素を保持し、要素の プロパティをposition:fixed操作しています。left

var leftInit = $(".scroll_fixed").offset().left;
var top = $('.scroll_fixed').offset().top - parseFloat($('.scroll_fixed').css('margin-top').replace(/auto/, 0));


$(window).scroll(function(event) {
    var x = 0 - $(this).scrollLeft();
    var y = $(this).scrollTop();

    // whether that's below the form
    if (y >= top) {
        // if so, ad the fixed class
        $('.scroll_fixed').addClass('fixed');
    } else {
        // otherwise remove it
        $('.scroll_fixed').removeClass('fixed');
    }

    $(".scroll_fixed").offset({
        left: x + leftInit
    });

});

を使用leftInitすると、可能な左マージンが考慮されます。ここで試してみてください: http://jsfiddle.net/F7Bme/

于 2011-01-13T02:53:28.153 に答える
21

おそらく今では先に進んでいると思いますが、水平方向にスクロール可能な固定要素ソリューションを探している他の人のための答えがあります. この jquery プラグインは、まさにこの問題を解決するために作成されました。

このデモでは、ページの上部に固定されている場合でも水平にスクロールするショッピング カートの概要を使用しています。また、表形式データの上のヘッダーにも使用しました。

デモ: http://jsfiddle.net/y3qV5/434/ (更新)

プラグインとソース: https://github.com/bigspotteddog/ScrollToFixed

使用法:

$(document).ready(function() {
    $('#cart').scrollToFixed( { marginTop: 10 } );
});
于 2011-08-30T14:39:09.447 に答える
9

cssプロパティposition:stickyを使用して取得します。

これが説明された記事とライブデモです。

http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit

唯一の欠点はブラウザの互換性です。

于 2012-09-14T10:26:33.857 に答える