如何将固定div中的绝对div居中

时间:2017-03-16 08:37:12

标签: css

我为照片设置了一个模态,所以当我点击一张小照片时,我会在一个模态中获得一张更大的照片,模态有position: fixed;,而模态内容有position: absolute;我可以用margin: auto; left: 0; right: 0;居中,但宽度一直向右和向左,我希望模态内容宽度与其中的照片或模态内容的内容相同

我的代码:

.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    padding: 30px;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */

}

.modal-content {
    background-color: #fefefe;
    position: absolute;
    top: 50px;
    margin-bottom: 30px;
    margin: auto;
    border: 1px solid #888;
}

.modalimg {
    position: relative;
    text-align: center;
}

.modalimg  img{
    max-width: 100%;
    max-height: 400px;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; 
    position: relative;
    box-shadow: 0 0 20px rgba(0,0,0,0.4); 

}
现在它可能有点乱,但我已经尝试了很多不同的东西而没有运气..

5 个答案:

答案 0 :(得分:6)

这是我使用绝对定位元素时所使用的内容,这对我一直有效:

.absolute-center {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

答案 1 :(得分:2)

请你

.element {
  position: absolute;
  top: 15px;
  z-index: 2;
  width: 40%;
  max-width: 960px;
  min-width: 600px;
  height: 60px;
  overflow: hidden;
  background: #fff;
  margin: 0 auto;
  left: 0;
  right: 0;
  background: red;
  color: #fff;
  text-align: center;
}
<div class="element">
  text..
</div>

答案 2 :(得分:1)

.modal-content {
    background-color: #fefefe;
    position: absolute;
    top: 50px;
    left: 50px;
    right: 50px;
    bottom: 50px;
    border: 1px solid #888;
    }

答案 3 :(得分:1)

将绝对div与中心对齐 左:0; 右:0 text-align:center 这将使div在中心对齐。

答案 4 :(得分:1)

这是一个可能的解决方案:

  • absolute定位在内容容器(.modal-content
  • 未对实际内容使用absolute|fixed

内容容器(.modal-content)将随其内容一起增长。最后,使用transform: translate(-50%, -50%);

将其移回中间

.modal {
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0,0,0,0.4);
}

.modal-content {
    border: 1px solid red;
    position: absolute;
    top: 50%;
    left: 50%;
    border: 2px solid red;
    transform: translate(-50%, -50%);
}
<div class="modal">
  <div class="modal-content">
    <img src="//placehold.it/200x200" alt="">
  </div>
</div>

<强>演示

Try before buy