2011-08-20 136 views
4

比方说,我有一个未知页面,其中一些内容相对定位,一些绝对定位。它有一些脚本,也可以有很多样式。如何将所有内容(相对,绝对,...)向下移动?

是否有任何通用的解决方案如何使“每个”页面内容向下移动50px(例如),以在页面顶部创建空白空间?

仅使用JS/CSS。有效性比功能性的优先级低,你知道的。

+1

尝试的50像素的顶缘'body'元件上.... –

+0

和内容将被放在旁边''元件? –

+2

(将身体向下移动是不好的做法将身体保留为边距:0)您应该使用新的div标记Id it将其包含在页面内容中,并通过top:50px;向下移动它。 – Undefined

回答

5

添加一个包装div并把margin//padding就此。

你必须定位添加到包装(absoluterelative,或fixed),任何事情,但static,使得它的孩子会定位到它。

JSFiddle Example


浏览器添加CSS到body标签,这就是为什么我不建议修改时表现不同。

+0

以及这将如何解决绝对放置的内容? –

+0

元素对他们的父对象是绝对的......如果在'body'中有任何绝对放置的元素,他们现在将通过向该body添加一个“margin-top:50px”来将其绝对包含在'body-wrapper' div – vol7ron

+0

中,包装,你会将页面中的所有内容向下移动50px。请注意,这也适用于'绝对','相对'和'静态'元素。 – vol7ron

2

我怀疑你想要做的是你现在在网站顶部看到的“警报”(比如stackoverflow)。我通常这样做的方式是添加一个div,ID为message作为body标签后面的第一个div。

如果你不能在html中这样做,那么只需使用JS在body标签打开时将div#message作为第一个div插入到DOM中。这样,无论div使用什么空间,其他所有内容都会被移除。

如果你有绝对定位的元素,你应该有应该所有你的网页内容是一个div包装应该有位置设置为相对。这种方式时,包装是向下移动,所有的内容将是。即使你不能修改html,我确信你的html中有这样的包装,只需使用CSS来改变它的位置属性即可。

在jQuery中,您可以使用prepend添加div作为body的第一个子项。

$('body').prepend("<div id='message'></div>"); 

在纯javascript类似的信息(未测试):

var myDiv = document.createElement('div'); 
myDiv.setAttribute("id","message"); 
insertBefore(myDiv,document.body.firstChild); 
相关问题