看来您并没有严格限制将 jQuery 用于此解决方案(评论),但您不知道任何其他替代方案。所以我提议一个。
替代方法 - 使用 CSS
您可以使用 CSS 代替使用 Javascript 来定位您的元素,并将您的元素定位fixed
在屏幕中间。几个最明显的好处:
- 您不必在客户端上执行额外的代码 = 提高性能
- 无论文档滚动如何,元素都保持集中 - 如果您希望使用 Javascript 进行相同的操作,您应该重新计算滚动事件的位置,但是当文档快速滚动时元素仍然会跳跃,因为 Javascript 执行不是那么即时(还)
由于您正在动态添加元素,您所要做的就是为其设置特定的 CSS 类名,该类名定义了 CSS 文件中的中心位置。
如果您不知道如何在屏幕中间放置一个元素,这个 JSFiddle将向您展示如何。它只是将元素定位在视口的中间,但不会生成新元素,因为您似乎已经知道如何做到这一点。
必需的 CSS
.centralise {
width: 200px; /* set dimension */
height: 50px;
position: fixed;
top: 50%; /* move top left to screen centre */
left: 50%;
margin: -25px 0 0 -100px; /* offset by half element's size left and up */
text-align: center; /* centralise text within element */
line-height: 50px;
}
如果您将元素 50% 放在顶部和左侧,则必须给它一个特定的尺寸,这样您就可以设置精确的负边距以使其处于死点。
不可能有固定尺寸?
如果您无法设置特定的元素尺寸,那么margin: 25% auto;
应该对此有所帮助。但在这种情况下,它只会水平定位在死点。垂直位置通常没有那么大的问题,因为您可以将元素放在上半部分或大致中心,它仍然看起来像集中。有时它甚至可能比中心更高,这取决于您的文档内容。