编程语言
首页 > 编程语言> > 固定滚动标题从JavaScript转换为jQuery

固定滚动标题从JavaScript转换为jQuery

作者:互联网

我找到了&定制了一个很棒的jsFiddle demo,它可以实现出色的滑动/固定标题效果. div框将相互推开,成为窗口顶部的下一个固定元素.

但是,我很难在普通文档中使用此效果.即使我将所有HTML,CSS和JS复制/粘贴到另一个index.html文件中,它也无法正常工作.奇怪的是,它在jsFiddle中完美运行,但在其他任何地方都没有.

理想情况下,有没有办法将所有这些JavaScript转换为jQuery?我觉得解决方案是冗长的,没有必要拥有所有这些代码行.我很感激任何帮助,因为这个解决方案是完美的,除了我不能在常规文档中工作.我知道jQuery会更容易使用,但我很难自己理解很多JS代码.

这里参考的是original stack thread,我找到了这个解决方案.它在一年前更新,应该仍然适用于大多数浏览器.

解决方法:

这是一个jQuery解决方案

$(function(){
  $(window).scroll(function(){
    var fixedHeads = $('.fixedheader');
    for(var i = 0, c = fixedHeads.length; i < c; i++){

      var header = $(fixedHeads[i]);
      var next = fixedHeads[i+1] ? $(fixedHeads[i+1]) : undefined;
      var prev = $(header.prev());

      if(window.pageYOffset > prev.offset().top){
        var top = 0;
        if(next){
          top = header.height() - (next.offset().top - window.pageYOffset);
          top = top < 0 ? 0 : -top;
        }
        if(top === 0){
          //if there is another header, but we have room
          prev.css('height', header.height() + 'px');
        }
        header.css({
          position: 'fixed',
          top: top + 'px'
        });
      } else{
        prev.css('height', '0px');
        //if we haven't gotten to the header yet
        header.css({
          position:'static',
          top:''
        });
      }
    }
  });
});

标签:jquery,javascript,scroll,fixed,jsfiddle
来源: https://codeday.me/bug/20190630/1331501.html