2

我希望将 div 容器放置在页面的最底部,但使用position:absolute它似乎容器只是从顶部放置 n 个像素。如果我将 HTML-tag 设置为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>

4

3 回答 3

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;
}

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

于 2013-09-04T14:34:37.360 回答
2

在小提琴中,body没有定位。所以绝对定位的元素是相对于 的html,而不是相对于 的body

而且html是100%高,和窗户一样高。

解决方法:给身体position:relative

更新了小提琴

于 2013-09-04T18:20:41.640 回答
-1

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

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

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

于 2013-09-04T14:34:43.453 回答