Javascript / jQuery粘性而不使用css位置:已修复

时间:2014-01-08 20:45:38

标签: javascript jquery css-position sticky

我正在寻找一个粘贴标头的Javascript / jQuery插件,它不会将元素的样式切换到固定的位置。通常,我正在使用这个http://stickyjs.com/并且它工作正常。

我正在使用jQuery动画制作一个网站,其中一个div有一个宽度为100%的粘性标题。但是当我向左移动时(例如),宽度:100%现在基于窗口的宽度而不是他的容器。

那么,是否有一个现有的插件与其他插件做同样的事情,但保持位置:相对并计算scrollTop以应用为我的粘贴标题的margin-top?

1 个答案:

答案 0 :(得分:3)

所以,我解决了我的问题!这是我的javascript代码:

你必须设置顶部:默认为0px

function relative_sticky(id, topSpacing){

if(!topSpacing){ var topSpacing = 0; }

var el_top = parseFloat(document.getElementById(id).getBoundingClientRect().top);
    el_top = el_top - parseFloat(document.getElementById(id).style.top);
    el_top = el_top * (-1);
    el_top = el_top + topSpacing;

    if(el_top > 0){
    document.getElementById(id).style.top = el_top + "px";
    } else{
    document.getElementById(id).style.top = "0px";
    }
}

window.onscroll = function(){

    relative_sticky("your_element_id", 10);
}

在IE中它不是很流畅,所以我添加一个延迟:

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

window.onscroll = function(){

    if(BrowserDetect.browser == "Explorer" || BrowserDetect.browser == "Mozilla"){
    // or your own way to detect browser

        delay(function(){
        relative_sticky("admin_users_head", 31);
        }, 200);
    }
    else{
    relative_sticky("admin_users_head", 31);
    }
}