Javascript 将绝对div定位在相对父-webkit浏览器中
我的HTML基本上如下所示:Javascript 将绝对div定位在相对父-webkit浏览器中,javascript,jquery,css,css-position,Javascript,Jquery,Css,Css Position,我的HTML基本上如下所示: <div id="#container"> <div id="left_col"> left stuff </div> <div id="middle_col"> middle stuff </div> <div id="right_col"> <div id="anchor"></div> <div id="
<div id="#container">
<div id="left_col">
left stuff
</div>
<div id="middle_col">
middle stuff
</div>
<div id="right_col">
<div id="anchor"></div>
<div id="floater>
The problem div
</div>
</div>
</div>
var a = function() {
var b = $(window).scrollTop();
var d = $("#anchor").offset().top;
var c = $("#floater");
if (b > d) {
var t = b-200; //200px is the height of the header, I subtract to make it float near the top
c.css({top:t+"px"});
} else {
c.css({top:""});
}
};
我使用以下javascript在向下滚动页面时保持#floater div的位置:
var a = function() {
var b = $(window).scrollTop();
var d = $("#anchor").offset().top;
var c = $("#floater");
if (b > d) {
c.css({position:"fixed",top:"10px"});
} else {
c.css({position:"absolute",top:""});
}
};
$(window).scroll(a);
a();
我遇到的问题是,在基于WebKit的浏览器中,一旦jQuery固定了浮动div的位置,使其与顶部保持10px的距离,容器中的“left:82px”就会跳出窗口,导致浮动器将82px跳转到左侧。这在FF或IE中不会发生。有人知道解决方法吗
更新:已解决
我解决这个问题的方法不是使用固定定位,而是使用绝对定位。我更改了javascript,将div#flotter的top CSS属性设置为基于值$(window.scrollTop(),如果div#anchor的top offset大于$(window.scrollTop())。很简单
因此,a()函数现在如下所示:
<div id="#container">
<div id="left_col">
left stuff
</div>
<div id="middle_col">
middle stuff
</div>
<div id="right_col">
<div id="anchor"></div>
<div id="floater>
The problem div
</div>
</div>
</div>
var a = function() {
var b = $(window).scrollTop();
var d = $("#anchor").offset().top;
var c = $("#floater");
if (b > d) {
var t = b-200; //200px is the height of the header, I subtract to make it float near the top
c.css({top:t+"px"});
} else {
c.css({top:""});
}
};
您有没有可以发布的示例…“浮动器”ID在标记中缺少引号。可能是您的其他浏览器在某种程度上原谅了它,但问题浏览器没有。我们试图伪造数字以使其在JSFIDLE中重现,但我今天没有时间了。;-)如果有人(比如尼克!)想接手,那就从这里开始:我无法在FF 11、Google Chrome和Opera 11.62上重现这种行为。你能指定浏览器的具体名称吗?顺便说一句,我试着从格雷格那里复制:引用错误在实际页面上不存在。