javascript - 滚动时固定标题

标签 javascript jquery html css

我在页面中间有一个表格的标题,但由于页面很大,我想在向下滚动页面时将标题固定在浏览器的顶部......

所以我的问题是:如何将标题设置为正常,直到用户向下滚动并且标题的顶部边框接触到浏览器边框,它应该固定在该位置,无论用户向下滚动多远卷轴?

最佳答案

让我解释一下如何做到这一点。

步骤

  1. 找到您的表格标题,并保存其位置
  2. 为窗口的 scroll 事件添加一个监听器。
  3. 对照表格标题位置检查窗口滚动
    1. 如果位置<窗口滚动-添加一个类来固定表头
    2. 否则,重置 css 使其表现得像普通标题。

我发布了一个 you can find here 的 fiddle .

代码示例

HTML

<div class='lots_of_stuff_in_here'> ... </div>
<table>
    <thead id='my_fixable_table_header'>
        <tr>
            <th>My awsesome header number 1</th>
            <th>My awsesome header number 2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Content</td>
            <td>Content</td>
        </tr>
        // much more content
    </tbody>
</table>

Javascript

// Just so you get the idea behind the code

var myHeader = $('#my_fixable_table_header');
myHeader.data( 'position', myHeader.position() );
$(window).scroll(function(){
    var hPos = myHeader.data('position'), scroll = getScroll();
    if ( hPos.top < scroll.top ){
        myHeader.addClass('fixed');
    }
    else {
        myHeader.removeClass('fixed');
    }
});

function getScroll () {
    var b = document.body;
    var e = document.documentElement;
    return {
        left: parseFloat( window.pageXOffset || b.scrollLeft || e.scrollLeft ),
        top: parseFloat( window.pageYOffset || b.scrollTop || e.scrollTop )
    };
}

关于javascript - 滚动时固定标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795283/

相关文章:

jquery - 单击链接时的下拉菜单

javascript - jQuery 对象包含什么?

javascript - 右键单击并拖动更改 div 大小

html - Bootstrap - 在顶栏中显示图像

使用 [] 而不是新数组的 Javascript 数组最佳实践?

javascript - 如何将值传递给扩展窗口的文本字段? (Firefox 网络扩展)

javascript - sap.m.表 : How to scroll to given listItem

javascript - 如何根据是否为占位符更改文本区域文本的颜色?

php - jQuery/JavaScript : How to get the nth pair in a group of pairs?

html - 在同一行的每一侧有两个 div