尝试重新创建此布局:
问题是黑色上方的白色框。我不知道黑匣子的高度。如何在其他框的顶部创建白框?
这是我的代码:
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
中的其他伸缩项目“干扰”。但是结果是它没有高度。
如何为登录叠加层设置其父级的全部高度?
答案 0 :(得分:1)
当位置为绝对位置时,top
,bottom
,right
和left
属性相对于position: relative
的第一个父对象起作用。
因此,您实际上并不需要margin-top: -25px
或margin-left: -50px
,只需将top: -25px; bottom: -25px; left: -25px
添加到.formbox
就可以了。如果需要将其向右移动,只需添加right: XXpx
并删除left
(或设置一个left: 50%
之类的正值)即可。
答案 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);
}