将HTML标记设置为position:relative

时间:2013-09-04 14:28:53

标签: html css position

我希望div容器位于我页面的最底部,但是使用position:absolute似乎容器位于距离顶部n个像素的位置。如果我将HTML标记设置为position:relative,则按预期工作。

将HTML标记设置为position:relative

是不错的做法

html {
  background: #FAFAFA;
  height: 100%;
}

body {
  padding: 0;
  margin: 0;
  line-height: 1.4;
  color: #CCC;
  font-family: 'Open Sans', Helvetica, Arial;
  font-size: 18px;
  min-height: 100%;
  overflow-y: scroll;
}

#sidebar_bottom {
  background: none repeat scroll 0 0 #313131;
  bottom: 0;
  left: 0;
  overflow: auto;
  position: absolute;
  width: 100%;
  min-height: 150px;
}

p {
  padding: 4px 8px;
  margin: 0
}
<div id="page_wrapper">
  <div id="main">
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
      euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate
      velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
      eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim
      ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.</p>

  </div>
  <div id="sidebar_bottom">
    <p>This container should be at the very bottom, not here!</p>
  </div>

</div>

3 个答案:

答案 0 :(得分:2)

这是因为HTML和BODY具有您网页上内容的大小。当你只有一个div时 - HTML被拉伸到那个大小。

将此添加到您的CSS:

html { height:100%; }
body { min-height:100%; }

这将使您的html成为浏览器视口的大小,并将主体设置为至少该视口的高度。 然后使用

再试一次
#yourdiv {
position:absolute;
bottom:0;
}
你的div上的

在看到jsFiddle之后,如果#footer元素是必须要结束的元素,请执行以下操作:

#page_wrapper {
 position:relative;
}
#footer {
 position:absolute;
}

要定位的元素的容器必须始终具有静态以外的设置位置。这是一般规则。

答案 1 :(得分:2)

在小提琴中,body未定位。因此,绝对定位的元素相对于html定位,而不是body

html高100%,与窗口一样高。

解决方案:提供正文position:relative

Updated fiddle

答案 2 :(得分:-1)

这取决于,如果您将身体标签相对于100%的宽度和100%的高度定位,您将能够使用绝对定位而没有任何风险。

body(position:absolute}
#Container {position:absolute; bottom:0;}

为了解释绝对和相对之间的区别,想象一个块,如果它是相对的,那么它内部的绝对div将使用相对div作为顶部和左侧定位的容器。