在全屏div中垂直和水平居中div

时间:2014-09-27 21:55:07

标签: html center

我有一个问题就是在另一个全屏div中垂直和水平居中div。子div的宽度和高度是固定的。

以下是代码:



html, body {
  height: 100%;
  margin: 0;
}
#header { 
  overflow: hidden;
  width:100%;
  height: 100%;

  background: orange;
  background-size:cover;
  -webkit-background-size:cover;

  display: table;
} 
#wrap {
  height: 200px;
  width: 500px;
  background:white;
  margin:0px auto;
}

<div id="header">
  <div id="wrap">
    <h1>Header</h1>
    <div id="some-text">Some text some text some text some text</div>
  </div>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

您可以尝试绝对居中:

#wrap {
  /* Absolute centering: */
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  margin: auto;

  /* It needs a height and a width: */
  height: 200px;
  width: 500px;
}

&#13;
&#13;
html, body {
  height: 100%;
  margin: 0;
}
#header { 
  overflow: hidden;
  width:100%;
  height: 100%;
  background: orange;
  background-size:cover;
  -webkit-background-size:cover;
  display: table;
} 

#wrap {
  height: 200px;
  width: 500px;
  background:white;
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  margin: auto;
}
&#13;
<div id="header">
  <div id="wrap">
    <h1>Header</h1>
    <div id="some-text">Some text some text some text some text</div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需像这样更改您的CSS:

html, body {
    width:100%;
    height: 100%;
    margin: 0;
}
#header {
    overflow: hidden;
    width:100%;
    height: 100%;
    background: orange;
    background-size:cover;
    -webkit-background-size:cover;
}
#wrap {
    height: 200px;
    width: 500px;
    background:white;
    margin:0px auto;
    position:absolute;
    top:50%;
    left:50%;
    margin-top:-100px;
    margin-left:-250px;
}

&#13;
&#13;
html, body {
  width:100%;
  height: 100%;
  margin: 0;
}
#header {
  overflow: hidden;
  width:100%;
  height: 100%;
  background: orange;
  background-size:cover;
  -webkit-background-size:cover;
}
#wrap {
  height: 200px;
  width: 500px;
  background:white;
  margin:0px auto;
  position:absolute;
  top:50%;
  left:50%;
  margin-top:-100px;
  margin-left:-250px;
}
&#13;
<div id="header">
  <div id="wrap">
    <h1>Header</h1>
    <div id="some-text">Some text some text some text some text</div>
  </div>
</div>
&#13;
&#13;
&#13;

See fiddle here

<强>解释

这是使用固定宽度元素时使用CSS的绝对居中元素最常用和最古老的方法之一。它只包括将position:absolute应用于元素以及顶部和左侧50%值。虽然这听起来应该可以单独使用,但元素具有自己的属性,例如宽度和高度,因此我们需要应用margin-leftmargin-top等于元素大小的一半(在这种特殊情况下,100px和250px)