Подтвердить что ты не робот

Как получить фиксированную позицию div для прокрутки по горизонтали с содержимым? Использование jQuery

У меня есть div.scroll_fixed со следующим CSS

.scroll_fixed {
    position:absolute
    top:210px

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

Я использую следующий код jQuery для установки класса .fixed, когда div достигает вершины страницы.

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 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.

В основном я хочу, чтобы он работал как второй блок в этом .

4b9b3361

Ответ 1

Демонстрация сохраняет элемент 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 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/

Ответ 2

Вероятно, вы уже перешли к этому вопросу, но вот ответ для любого, кто ищет горизонтально прокручиваемое решение с фиксированным элементом. Этот плагин jquery был создан для решения этой проблемы.

В этой демонстрации используется сводка корзины покупок, которая по-прежнему будет прокручиваться по горизонтали, если она установлена ​​в верхней части страницы; и я также использовал его для заголовка над табличными данными:

Демо: http://jsfiddle.net/y3qV5/434/ (обновлено)

Плагин и источник: https://github.com/bigspotteddog/ScrollToFixed

Использование:

$(document).ready(function() {
    $('#cart').scrollToFixed( { marginTop: 10 } );
});