Javascript 当一个div到达页面顶部时(滚动时),如何向其添加css?

Javascript 当一个div到达页面顶部时(滚动时),如何向其添加css?,javascript,jquery,css,Javascript,Jquery,Css,我想这样做,当用户向下滚动并达到某个div时,比如说#float,将该div设置为margin top:50px和position fixed,如果用户向上滚动,撤消这些更改。这很难理解,我知道),如果你把注意力放在边栏上,上下滚动,你就会明白我的意思 当你向下滚动时,第二个广告也会滚动一页 如何使用jQuery/CSS实现相同的功能?这是在jQuery中实现的一种方法 本代码仅用于示例目的;几乎可以肯定的是,有少数定期维护的jQuery插件可以为您完成这项工作—检查或。 下面是上述措施的一个例

我想这样做,当用户向下滚动并达到某个div时,比如说#float,将该div设置为margin top:50px和position fixed,如果用户向上滚动,撤消这些更改。这很难理解,我知道),如果你把注意力放在边栏上,上下滚动,你就会明白我的意思

当你向下滚动时,第二个广告也会滚动一页


如何使用jQuery/CSS实现相同的功能?

这是在jQuery中实现的一种方法

本代码仅用于示例目的;几乎可以肯定的是,有少数定期维护的jQuery插件可以为您完成这项工作—检查或。

下面是上述措施的一个例子

编辑:现在,我们已将此代码重构为更优雅的解决方案


编辑2:在收到一封关于一个问题的电子邮件后,我更新了上面的代码,这样它也可以在Firefox中使用。由于
$('body').scrollTop()
在Firefox中不起作用(请参阅上的注释),我们需要检查
html
body
元素

这是该站点上使用的相关jQuery/JavaScript代码

  if (window.XMLHttpRequest) {
    var topGagStay = $("top-gag-stay");
    var isLoggedIn = $("profile-menu") ? true : false;
    var sidebarAdsTop = 1061 - 545;
    var signupBtnOffset = 60;
    var dockPos = 72;
    if (!isLoggedIn && !GAG.isReadOnly()) {
      sidebarAdsTop += signupBtnOffset
    }
    if (formMessageShown) {
      sidebarAdsTop += formMessageOffset
    }
    if (topGagStay) {
      if (document.documentElement.scrollTop > sidebarAdsTop || self.pageYOffset > sidebarAdsTop) {
        if (topGagStay.style.position != "fixed") {
          topGagStay.style.position = "fixed";
          topGagStay.style.top = dockPos + "px"
        }
      } else {
        if (document.documentElement.scrollTop < sidebarAdsTop || self.pageYOffset < sidebarAdsTop) {
          topGagStay.style.position = "";
          topGagStay.style.top = ""
        }
      }
    }
  }
if(window.XMLHttpRequest){
var topGagStay=$(“top gag stay”);
var isLoggedIn=$(“配置文件菜单”)?真:假;
var sidebarAdsTop=1061-545;
var signupbtnfset=60;
var-dockPos=72;
如果(!isLoggedIn&&!GAG.isReadOnly()){
sidebarAdsTop+=SignupptOffset
}
如果(显示FormMessage){
sidebarAdsTop+=formMessageOffset
}
如果(托普加格停留){
if(document.documentElement.scrollTop>sidebarAdsTop | | self.pageYOffset>sidebarAdsTop){
如果(topGagStay.style.position!=“固定”){
topGagStay.style.position=“固定”;
topGagStay.style.top=dockPos+“px”
}
}否则{
if(document.documentElement.scrollTop

感谢FireBug和代码(当然还有9GAG)。

我通过beardtwizzle尝试了上述答案,效果很好。当页面滚动到页面底部时,也可以使用它


请参见此处的工作/教程

一个问题,这条线的作用是什么?如果($(document.body).scrollTop()>50)@IlyaKnaup我现在已经替换了这个。。。50将是触发以下事件的高度(px)。。。在我现在的代码中,这是基于
div
的位置,它的
id
为“float”,我还更新了这里的Fiddle()
  if (window.XMLHttpRequest) {
    var topGagStay = $("top-gag-stay");
    var isLoggedIn = $("profile-menu") ? true : false;
    var sidebarAdsTop = 1061 - 545;
    var signupBtnOffset = 60;
    var dockPos = 72;
    if (!isLoggedIn && !GAG.isReadOnly()) {
      sidebarAdsTop += signupBtnOffset
    }
    if (formMessageShown) {
      sidebarAdsTop += formMessageOffset
    }
    if (topGagStay) {
      if (document.documentElement.scrollTop > sidebarAdsTop || self.pageYOffset > sidebarAdsTop) {
        if (topGagStay.style.position != "fixed") {
          topGagStay.style.position = "fixed";
          topGagStay.style.top = dockPos + "px"
        }
      } else {
        if (document.documentElement.scrollTop < sidebarAdsTop || self.pageYOffset < sidebarAdsTop) {
          topGagStay.style.position = "";
          topGagStay.style.top = ""
        }
      }
    }
  }