代码之家  ›  专栏  ›  技术社区  ›  Elmer Almeida

位置固定-水平滚动[关闭]

  •  5
  • Elmer Almeida  · 技术社区  · 14 年前

    我有一个左垂直侧栏,当用户垂直滚动时,侧栏与用户一起垂直滚动。但是,如果窗口太小,当用户水平滚动时,垂直侧栏会随着窗口一起滑动。如何停止侧栏水平滚动,同时允许侧栏与用户垂直滚动。

    我不想这样做。

    overflow: hidden;
    

    因为我希望用户能够水平滚动,但我只是不希望侧栏与他们一起出现。

    这是我的javascript:

    $(document).ready(function(){
        var top = $("#sidebar").offset().top;
        $(window).scroll(function(){
            var y = $(window).scrollTop();
            if (y >= top) {
                $("#sidebar").addClass('fixed');
            } else {
                $("#sidebar").removeClass('fixed');
            }
        });
    });
    

    我的css是:

    #sidebar {
        position: absolute;
        height: 100%;
        min-width: 100px;
        width: 100px;
        overflow: hidden;
        background-color: #ededed;
        border-right: 1px solid #aaa
        }
    #sidebar.fixed {
        position: fixed;
        height:100%;
        top: 0%;
        z-index: 1;
    }
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Luke    14 年前

    那么修复可能是错误的方法。

    理论上你可以使用 .scroll 功能更新元素的绝对顶部位置,如果顶部发生变化,但当左侧属性发生变化时忽略滚动事件。

    请看这个小而简单的例子。 http://jsfiddle.net/Hbkdt/

    注意:您可以将其与动画功能相结合,并取消窗口事件的抖动,使其仅每隔30-50毫秒激发一次,然后更新值。

    动画和去抖动示例: http://jsfiddle.net/Hbkdt/1/