2010-10-06 37 views
0

说我有一个绝对定位的div在一个正常的。位置:固定在包裹块内

<div id="wrap"> <div id="sidebar"></div> </div> 

在这种情况下,当I状态为“文”,它们是在“包装”的内部计算topleft,因为后者是position="relative"

然而,当我改变“侧边栏”来position="fixed",坐标是相对于<body>计算,而不是“包装”,这将导致跳出其父的“侧边栏”,即使坐标保持不变。

如何让“侧边栏”留在“包裹”内,但是要修复?

谢谢。

回答

1

实际上,position:fixed属性的文档非常清晰:生成绝对定位的元素,相对于浏览器窗口定位。

所以,坐标是相对于身体而言,而不是窗口。

如何让“侧边栏”留在“包裹”内部,但是被修复?
这个问题似乎很奇怪。即使'侧栏'最初保留在'换行'中,用户也可以总是向下滚动:'换行'将移动到窗口顶部(并可能消失),而'侧栏'将位于用户屏幕上的完全相同位置。

编辑
“固定”位置元件的一个例子是“欢迎到...”当你来到第一时间任何堆栈交换位点顶杆(例如,cooking)。

1

@Nikita暗示,这个想法不是使用position: fixed而是使用position: absolute

为此,您还需要将父元素#wrapposition: relative' in order to have the#侧栏位置相对于父元素而不是窗口定位。