给body元素设置fixed属性页面就跑到了最顶部?

沃德天_拉莫帅
  • 655

当页面滚动到底部,给body设置一个position:fixed,页面就会跑动到最顶部,有什么好的方法可以解决呢?

$("body").css({
    "position": "fixed",
    "width": "100%"
});
回复
阅读 8.3k
5 个回答

CSS中position属性( absolute | relative | static | fixed )详解
引用上面链接中的话:

我们先来看看CSS3 Api中对position属性的相关定义:
static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。
relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。
fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。

什么是文档流?

  将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。
  只有三种情况会使得元素脱离文档流,分别是:浮动、绝对定位和相对定位。

题主,你给body设置一个position:fixed,你是想要干嘛啊?

brook
  • 3.1k

获取 document.scrollingElement.scrollTop值,然后使用js添加到top样式上就行了
或者使用 document.body.scrollTop || document.documentElement.scrollTop也可以

查看演示

什么需求需要在body设置fixed?我建议还是尽快改过来。

fixed是相对于显示视窗定位的,你设置fixed以后默认top偏移值是0,所以相当于固定在显示视窗的顶部。题主都没有提到想要的效果,怎么给出解决方案。。。

直接给body加一个 overflow:hidden 就行了不需要放fixed什么的之类。页面就不会滚动了。

宣传栏