将元素居中覆盖另一个元素

时间:2016-05-18 16:20:40

标签: html css css3 flexbox

我想在其中创建一个带有居中文本框的标题,但似乎无法居中。我知道有无数类似的问题已被问到,但我无法解决如何使用图像顶部的文本框进行操作。

这里有人有解决方案吗?我更喜欢使用flex。 在代码片段中,我试图将红色框居中。

#container {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  position: relative;
  background: purple;
  width: 100%;
  height: 100vh;
}
#back {
  background: blue;
  height: 80%;
  width: 80%;
}
#top {
  position: absolute;
  background: red;
  width: 40%;
  height: 40%;
  margin-left: 25%;
  margin-top: auto;
}
<div id="container">
  <div id="top"></div>
  <div id="back"></div>
</div>

2 个答案:

答案 0 :(得分:4)

#container {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  position: relative;
  background: purple;
  width: 100%;
  height: 100vh;
}
#back {
  background: blue;
  height: 80%;
  width: 80%;
}
#top {
  position: absolute;
  background: red;
  width: 40%;
  height: 40%;
  left: 50%;                        /* center horizontally */
  top: 50%;                         /* center vertically */
  transform: translate(-50%,-50%)   /* tweak for precise centering; details:
                                       http://stackoverflow.com/q/36817249 */
}
<div id="container">
  <div id="top"></div>
  <div id="back"></div>
</div>

答案 1 :(得分:2)

这是另一个答案jsfiddle 1

&#13;
&#13;
#container {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    position: relative;
    background: purple;
    width: 100%;
    height: 100vh;
}

#back{
    background: blue;
    height: 80%;
    width: 80%;
}

#top {
    position: absolute;
    background: red;
    width: 40%;
    height: 40%;
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
    margin-top: 12%;
    
}
&#13;
 <div id="container">
            <div id="top"></div>
            <div id="back"></div>
        </div>
&#13;
&#13;
&#13;

相关问题