2011-01-27 54 views
1

我在</body>文档的标签(文档结束之前)之前有一个div。 我想使用CSS或JavaScript在页面顶部显示此div。从页面顶部的文档末尾放置一个元素

我知道position:absolute;。问题是,如果我使用它,div将显示在位于顶部的其他内容之上,而不是在此内容之前。

那么还有其他方法可以做到吗?

+0

@Alex:也许我不完全明白,但为什么你不把它放在开头? – 2011-01-27 08:24:30

+0

因为该分区是用于调试目的,它的内容可以改变,直到整个文档完成显示... – Alex 2011-01-27 08:25:41

+0

@Alex:你一定要明白,你可以在任何地方在页面上的HTML源代码显示的任何元素,无论其流的位置?而对于这样的信息分支机构来说,'position:fixed; top:0;`似乎是完美的。而且他们并不需要被视为第一个“身体”的孩子。 – 2011-01-27 08:31:44

回答

2

您可以使用位置:绝对 DIV元素,然后分配一个边距到body元素它等于div的可能高度。

2

我不认为有一种方法可以大幅度重新定位元素,同时将其保持在内联流程中。正如您已经提到的那样,绝对定位将内联流中的元素删除 - 从而与其他内容重叠。

然而,您可以使用Jquery克隆内容,并将其附加到顶端附近。你也可以查询div的高度,并使用jquery来设置主体的顶部边距。

这两个都可以让它尊重内联流程,但它不会像你的问题所指的那样使用CSS;如果你愿意,我可以帮助Jquery。

编辑:

<script type="text/javascript"> 
     window.onload = function() { 

     document.getElementById("content").style.marginTop = document.getElementById("errorDisplay").offsetHeight + "px"; 

     } 
    </script> 

我玩这个中的jsfiddle - 实际上,它是怪怪的...但它肯定是接近的工作。我使用的是wrappercontent,而不是操纵整个机身(我认为更安全一些)。确保在命令末尾添加了+ "px",否则它将无法工作。

这里的小提琴......

http://jsfiddle.net/pVn2W/

正如你所看到的,它推动了整个包装下来,而不是仅仅“内容” ......用在“内容”或“包装”第一个论据不会奇怪地改变任何事情。

不完全是你的模型,但仍实现相同目标的运动 - 也许这将让你更近了一步:P

2

的替代Cyber​​nate的答案是使用位置:固定做到这一点。

然而,这个div即使在滚动时也会始终处于顶端。如果你使用它的错误类型的东西:)这是伟大的一个“通知”栏,但刺激性

1

如果使用JavaScript的是,你可以简单地做这一个选项:

// For demonstration I am creating a <div id="mydiv">Hello World</div> 
// Appending it to <body> means it goes to the very bottom of the body tag 
var div = document.createElement("div"); 
div.id="mydiv"; 
div.innerHTML = "Hello World"; 
document.getElementsByTagName("body")[0].appendChild(div); 
// In your case I assume that the div is already present inside the HTML source 
// just before </body>, So no need to do the above 
document.getElementsByTagName("body")[0].insertBefore(
    document.getElementById("mydiv"), 
    document.getElementsByTagName("body")[0].firstChild 
); 

复制粘贴上面的代码在演示的控制台中。如果你使用jQuery,上面提到的代码可以简化为一行。

相关问题