我在页面中间有一个表格的标题,但由于页面很大,我想在向下滚动页面时将标题固定到浏览器的顶部......
所以我的问题是:如何将标题设置为正常,直到用户向下滚动并且标题的顶部边框接触浏览器边框,无论用户向下滚动多少,它都应该保持固定在该位置上?
我在页面中间有一个表格的标题,但由于页面很大,我想在向下滚动页面时将标题固定到浏览器的顶部......
所以我的问题是:如何将标题设置为正常,直到用户向下滚动并且标题的顶部边框接触浏览器边框,无论用户向下滚动多少,它都应该保持固定在该位置上?
让我解释一下如何做到这一点。
positionscroll事件添加一个侦听器。我发布了一个小提琴,你可以在这里找到。
<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>
// 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 )
    };
}
</p>
您正在寻找一个水平方向的“粘性框”,它会在您滚动时跟随您向下滚动。
这是一个演练,解释了如何为侧边栏创建这种效果:http: //css-tricks.com/scrollfollow-sidebar/
我修改了代码以使用跨越页面宽度的通用示例:
<div class="wrapper">
  <div class="head">HEAD</div>
  <div class="header">Table Header</div>
  <div class="content">Content</div>
  <div class="footer">Footer</div>
</div>
.wrapper {
  border:1px solid red;
}
.head{
  height: 100px;
  background: gray;
}
.header {
  background:red;
  height:100px;
  left:0;
  right:0;
  top:0px;
  margin-top:100px;
  position:absolute;
}
.content {
   background:green;
   height:1000px;
}
.footer {
   background:blue;
   height:100px;
}
$(function() {
    var $sidebar = $(".header"),
        $window = $(window),
        offset = $sidebar.offset(),
        topPadding = 0;
    $window.scroll(function() {
        if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                top: $window.scrollTop() - offset.top + topPadding
            });
        } else {
            $sidebar.stop().animate({
                top: 0
            });
        }
    });
});
当您滚动超出最初出现的位置时,这会将标题块动画化到视图中。
我希望你看起来像这个 Header Fix Demo
HTML
<div class="wrapper">
<div class="header">Header Fix</div>
<div class="content">Content</div>
<div class="footer">Footer</div>
</div>
CSS
.wrapper {
  border:1px solid red;
}
.header {
  background:red;
  height:100px;
  position:fixed;
  left:0;
  right:0;
  top:0;
}
.content {
   background:green;
   height:1000px;
}
.footer {
   background:blue;
   height:100px;
}
为了保持任何块元素的位置固定,您需要在样式的 display 属性中使用 absolute 或 fixed 属性,但不要忘记给顶部元素留出足够的空间并打破顶部元素,否则它将进入标题部分。
您可以尝试将底部元素包含在一个 div 中的标题下,然后将类添加到该 div 将溢出设置为自动
这是使用固定页眉、页脚和列的完整工作版本!
应用相对位置的类,非常重要,否则固定列会重叠页眉和页脚,然后在需要的地方定义表级别的类:“sticky-table”(强制),“sticky-header”,“sticky- column”,“sticky-footer”,而不是调用函数“applyStickyHeaders”。就这样!
$(function(){
    applyStickyHeaders();
});
完整示例:
https://jsfiddle.net/pintilies/6zLyxewg/4/
在 IE、FireFox 和 Chrome 中测试。
$(window).scroll(function() {
 if ($(this).scrollTop() > 100){  
    $('header').addClass("sticky");
  }
  else{
    $('header').removeClass("sticky");
  }
});
CSS:
header.sticky {
  font-size: 24px;
  line-height: 48px;
  height: 48px;
  background: #efc47D;
  text-align: left;
  padding-left: 20px;
}