【问题标题】:HTML/CSS How to center DIV inside absolute DIV [duplicate]HTML / CSS如何在绝对DIV中居中DIV [重复]
【发布时间】:2017-02-28 06:59:22
【问题描述】:

我有一个无法解决的问题。我试图将这个黑框居中在具有绝对位置的红框内。我尝试将黑匣子设置为相对位置,但我觉得我错过了一些东西。

最终,我正在尝试制作顶部标题。

这是一张图片header-image.jpg

帮助?

body.esc-layout {
    min-width: 960px;
    margin: 0 auto;    
}
.promo-bar {
    display: block;        
}
.promo-bar .customer-care-wrapper {
    float: left;
    max-width: 50%;
}
.promo-bar .customer-care {
    font-size: 11px;
    color: #000;
    margin-left: 15px;
    display: block;
}
.promo-bar {
    width: 100%;
    min-height: 32px;
    position: relative;
    height: auto;
    overflow: visible;
    z-index: 5;
    background-color: #EEE;
    overflow: hidden;
  }
.promo-bar .service-message-wrapper {
    padding-top: 2px;
    max-width: 50%;
    margin: 0 auto;
    position: relative;
   
    
}

.service-message-wrapper .service-banner{
    position: absolute;
    left: 0px;
    right: 0px;
    text-align: center;
    background: red;
}
.caption-wrapper{
    position: relative;
    background: black;
}

.service-message-wrapper .captions{
  
    font-family: inherit;
    font-style: italic;
    font-size: 14px;
    color: white;    
}
<body class="esc-layout">
        <div class="promo-bar">
            <div class="customer-care-wrapper promo-block">
                <div class="customer-care" style="padding-top:10px; padding-bottoms:12px;">
                    "      Contact us 24/7: "
                </div>
        
            </div>
            <div class="service-message-wrapper promo-block" style="height: 28px;">
                <div class="service-banner service-message-1" style="margin-top: 0px;">
                    <div class="caption-wrapper">
                        <p class="captions">
                        
                            <span> Same-day delivery to New York  </span>   
                        </p>
                    </div>    
                </div>
            
            </div>
        
        </div>
       
        
    </body>

【问题讨论】:

    标签: html css


    【解决方案1】:

    对于中心 div,使用弹性框非常容易。

    div.outer {
      align-items: center;
      background: red none repeat scroll 0 0;
      display: flex;
      height: 50px;
      position: absolute;
      right: 0;
      top: 0;
      width: 50%;
    }
    
    div.inner {
      background: black none repeat scroll 0 0;
      height: 20px;
      left: 0;
      width: 100%;
    }
    
    <html><head>
        </head>
    
    <body>
        <div class="outer">
           <div class="inner"></div>
        </div>
    
    </body>
    </html>
    

    不要忘记将 webkit 用于 safari 和 chrome,在您的情况下,我认为最好为 &lt;p&gt; 设置 margin:0 以获得更好的控制

    p.captions{margin:0;}
    

    【讨论】:

      【解决方案2】:

      在绝对元素内部居中,内部元素需要是绝对的,并给出宽度和高度。

      .red-box{
      background-color:red;
      width:400px;
      height:400px;
      position:absolute;
      left:0;
      right:0;
      top:0;
      bottom:0;
      margin:auto;
      }
      
      .black-box{
      background-color:black;
      width:200px;
      height:200px;
      position:absolute;
      top:0;
      bottom:0;
      left:0;
      right:0;
      margin:auto;
      

      }

      <div class="red-box">
              <div class="black-box"> </div>
      </div>
      

      working sample (click run button)

      【讨论】:

        【解决方案3】:

        您可以将position: absolutetoptransform 结合使用。

        诀窍在于,在top: 50% 中,50% 指的是父级高度。在transform 中,50% 指的是元素的自己的高度。

        .outer {
          height: 50px;
          width: 50%;
          position: absolute;
          top: 0;
          right: 0;
          background: red;
         }
        
        .inner {
          position: absolute;
          left: 0;
          
        
          /* make the top edge of .inner appear in the vertical center of .outer */
          top: 50%;
         
          /* move .inner up by half of its height so that its middle is in the middle of .outer */
          transform: translateY(-50%);
        
          height: 20px;
          width: 100%;
          background: black;
         }
        <div class="outer">
          <div class="inner"></div>
        </div>

        更多信息:http://howtocenterincss.com/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-11
          • 1970-01-01
          • 2017-12-20
          • 2012-12-30
          • 2020-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多