HTML / CSS如何在绝对DIV中居中DIV [重复]

Posted

技术标签:

【中文标题】HTML / CSS如何在绝对DIV中居中DIV [重复]【英文标题】:HTML/CSS How to center DIV inside absolute DIV [duplicate] 【发布时间】: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>

【问题讨论】:

【参考方案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.captionsmargin: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/

【讨论】:

以上是关于HTML / CSS如何在绝对DIV中居中DIV [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在div中居中图像?

如何在 div 中居中输入 [重复]

css如何实现span在div中水平居中

在 CSS 中居中 div [关闭]

如何让DIV层在网页中居中显示

如何让一个img在div中居中,而img的宽度可能比div还大