绝对定位忽略填充

新手上路,请多包涵

我正在尝试将带有按钮的 div 定位在具有填充的父 div 的底部。

当前结果

预期的结果是按钮位于填充(绿色区域)的顶部。

 .btn-default,
.btn-default:hover,
.btn-default:focus {
  color: #333;
  text-shadow: none;
  /* Prevent inheritence from `body` */
  background-color: #fff;
  border: 1px solid #fff;
}
a,
a:focus,
a:hover {
  color: #fff;
}
body {
  background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.6)), url("../img/blank.jpg");
  background-attachment: fixed;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center top;
}
html,
body {
  height: 100%;
}
body {
  color: #fff;
  text-align: left;
  text-shadow: 0 1px 3px rgba(0, 0, 0, .5);
}
#mcontainer {
  position: relative;
  float: left;
  padding: 10%;
  width: 100%;
  height: 100%;
}
#header h1 {
  margin: 0px;
}
#header {
  height: auto;
}
#footer .link-item a {
  display: table-cell;
  padding: 10px 10px;
  border: 2px solid white;
}
#footer {
  position: absolute;
  top: auto;
  bottom: 0%;
  height: auto;
}
#footer .link-item:first-child {
  border-spacing: 0px 10px;
  margin: 10px 10px 10px 0px;
}
#footer .link-item {
  border-spacing: 0px 10px;
  margin: 10px 10px;
}
 <!DOCTYPE html>
<html lang="en">

<body>
  <div id="mcontainer">

    <div id="header">
      <h1>Text</h1>
    </div>

    <div id="footer">
      <span class="link-item"><a href="www.google.com" target="new">Button</a> </span>
      <span class="link-item"><a href="www.google.com" target="new">Button</a> </span>
      <span class="link-item"><a href="www.google.com" target="new">Button</a> </span>
      <span class="link-item"><a href="www.google.com" target="new">Button</a> </span>
      <span class="link-item"><a href="www.google.com" target="new">Button</a> </span>
    </div>

  </div>
</body>

</html>

任何帮助,将不胜感激。

原文由 MarkB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 213
2 个回答

绝对定位不考虑填充。一个可能的解决方案是在 .mcontainer 中添加另一个容器,它也有 position: relative 。这样,内部容器将尊重填充,并且绝对定位的元素将位于内部容器的底部。

原文由 Daniel Diekmeier 发布,翻译遵循 CC BY-SA 3.0 许可协议

你在这里有两个问题:

首要问题

您的按钮是绝对的,但具有相对定位的第一个父元素是 mcontainer 元素。因此,按钮将仅对该元素是绝对的。

从 mcontainer 元素中删除 position:relative ,并将 body 元素设置为具有相对定位。

第二期

正如 Turnip 所指出的,绝对定位不会考虑填充。因此,通过为按钮容器设置负 bottomleft 样式来抵消这一点。

见小提琴: https ://jsfiddle.net/6smpvqq8/1/

原文由 A.Sharma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏