【发布时间】:2020-03-27 13:14:49
【问题描述】:
我试图让一个 div(main) 与另一个 div(centre) 居中,div(main) 需要是静态的,因为我不希望它滚动但 div(centre) 必须是绝对,因此它可以位于具有 onclick 功能的单独 div 上。
当前的 HTML 和 css:
<div className='meal_popup'>
<div className='meal_popupElement'>
<p>testing1</p>
</div>
<div onClick={this.mealOne_boxClickHandler} className='meal_popupBackground' />
</div>
.meal_popup {
position: fixed;
display: flex;
align-items: center;
top: 0;
width: 100%;
height: 100%;
z-index: 30;
}
.meal_popupElement {
position: absolute;
width: 100%;
height: 100%;
background: white;
border-radius: 15px;
height: 35rem;
margin-left: 1rem;
margin-right: 1rem;
box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
0px 1px 3px 0px rgba(0, 0, 0, 0.12);
z-index: 2;
}
.meal_popupBackground {
position: relative;
background: rgba(00, 00, 00, 0.6);
width: 100%;
height: 100%;
z-index: 1;
}
目标: (这在视觉上看起来是我想要的,但问题是整个 div 是可点击的,并且只希望在背景 HTML 和 css 上使用该功能:)
<div onClick={this.mealTwo_boxClickHandler} className='meal_background'>
<div>
<p>testing2</p>
</div>
</div>
.meal_background {
position: fixed;
display: flex;
align-items: center;
top: 0;
width: 100%;
height: 100%;
background: rgba(00, 00, 00, 0.6);
z-index: 30;
}
.meal_background div {
background: white;
border-radius: 15px;
height: 35rem;
width: 100%;
margin-left: 1rem;
margin-right: 1rem;
box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
0px 1px 3px 0px rgba(0, 0, 0, 0.12);
}
【问题讨论】:
-
您可以添加相对于 div 的位置而不是绝对位置。然后你可以添加 text-align: center 如果它不是一个 flex 项目并且只是一个 inline-block 或者在 flex 上使用 justify-content: center;在父级上。
-
抱歉,它不起作用,这是您推荐的 css 的结果 imgur.com/U8kkVa0 我认为我需要绝对的 div 重叠,因为它们不在同一个 div 中,谢谢
-
@RitanshuSingh 可能是我错过了解释你的代码,也许把它写出来,我看看它是否有效?
-
我不明白你的项目,但这个技巧适用于每个元素。您可以保持代码不变,但将以下代码添加到要居中的元素中。左:50%;和变换:translateX(-50%);