绝对位置的孩子的父母全高

时间:2018-11-25 21:38:23

标签: css flexbox

尝试重新创建此布局:

enter image description here

问题是黑色上方的白色框。我不知道黑匣子的高度。如何在其他框的顶部创建白框?

这是我的代码:

https://codepen.io/olefrankjensen/pen/oQyZpX?editors=1100

HTML

<div class="container">
  <div class="formbox">[login form markup here...]</div>
  <div class="box">
    <h1>Don't have an account</h1>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus dicta cumque harum.</p>
    <button>SIGN UP</button>
  </div>
  <div class="box">
    <h1>Have an account</h1>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusamus dicta cumque harum.</p>
    <button>LOGIN</button>
  </div>
</div>

CSS

// reset
h1, h2, h3, h4, h5, h6, p, button, div {
  margin: 0;
  padding: 0;
  line-height: 1;
}

// font
@import url('https://fonts.googleapis.com/css?family=Roboto');

// colors
$white: rgba(255,255,255,.8);

:root {
  font-size: 16px;
}

body {
  background-image: url(
https://picsum.photos/1200/800?);
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: 'Roboto', sans-serif;
  color: $white;
}

.container {
  width: 900px;
  margin: 50px auto;
  background: rgba(0,0,0,.5);
  position: relative;
  display: flex;
}
.box {
  padding: 5rem 3rem;
  float: left;

  h1, p {
    margin-bottom: 1rem;
  }

  button {
    padding: 1rem 2rem;
    background: transparent;
    border: 2px solid $white;
    border-radius: 6px;
    color: $white;
    text-align: center;
    font-size: 1rem;   
    cursor: pointer;
    text-transform: uppercase;
  }
}

.formbox {
  width: 500px;
  background: white;
  margin-left: -50px;
  margin-top: -25px;
  box-shadow: 0 0 50px black;
  display: block;
  position: absolute;
}

我必须绝对放置.formbox的位置,以免它与伸缩容器.container中的其他伸缩项目“干扰”。但是结果是它没有高度。

如何为登录叠加层设置其父级的全部高度?

2 个答案:

答案 0 :(得分:1)

当位置为绝对位置时,topbottomrightleft属性相对于position: relative的第一个父对象起作用。

因此,您实际上并不需要margin-top: -25pxmargin-left: -50px,只需将top: -25px; bottom: -25px; left: -25px添加到.formbox就可以了。如果需要将其向右移动,只需添加right: XXpx并删除left(或设置一个left: 50%之类的正值)即可。

https://codepen.io/anon/pen/gQKWNq?editors=1100

答案 1 :(得分:0)

我可以将100%+ 50px的高度添加到formbox类中(边距为-25px x 2)。您可以使用calc函数执行此操作:https://developer.mozilla.org/en-US/docs/Web/CSS/calc

.formbox {
    width: 500px;
    background: white;
    margin-left: -50px;
    margin-top: -25px;
    box-shadow: 0 0 50px black;
    display: block;
    position: absolute;
    height: calc(100% + 50px);
}