使用display时,Div不居中:table-cell

Ang*_*ris 3 html css

我一直在使用display: tablehtml连同display: table-cell我的body表演,使我的所有网页的内容出现在屏幕的正中心.虽然,这适用于段落,标题,输入和标签等(至少我已经测试过),它似乎不适用于div元素.
有没有办法让div元素像其他元素一样工作?纯CSS解决方案是最好的.

示例(也在Codepen上)

html {
  display: table;
  height: 100%;
  width: 100%;
  text-align: center;
}
body {
  display: table-cell;
  vertical-align: middle;
}
.hidden {
  display: none;
}
.leaf {
  border-radius: 15px 2px 15px 2px;
  border: 1px solid green;
  background-color: green;
  width: 250px;
  height: 80px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="leaf">Why am I not centered?</div>
<p>And why am I centered?</p>
Run Code Online (Sandbox Code Playgroud)

Pra*_*h V 5

只需添加margin: 0 auto;..正常工作.

html {
  display: table;
  height: 100%;
  width: 100%;
  text-align: center;
}
body {
  display: table-cell;
  vertical-align: middle;
}
.hidden {
  display: none;
}
.leaf {
  border-radius: 15px 2px 15px 2px;
  border: 1px solid green;
  background-color: green;
  width: 250px;
  height: 80px;
  margin:0 auto;

}
Run Code Online (Sandbox Code Playgroud)
<div class="leaf">Why am I not centered?</div>
<p>And why am I centered?</p>
Run Code Online (Sandbox Code Playgroud)

  • 如果在已将`margin:0 auto`应用于的对象上指定了宽度,则该对象将集中在其父容器中.指定`auto`作为第二个参数基本上告诉浏览器自动确定左边距和右边距本身,它通过设置它们来做同样的事情.它保证左右边距将设置为相同的大小.第一个参数0表示顶部和底部边距都将设置为0. (2认同)