垂直对齐 Div

Vertically Align Divs

我试图在我的代码中垂直对齐 div 但没有成功。此 div 包含子 div。第一个

我希望它看起来像这样:

但目前还没有对齐。这是我的 HTML 代码:

body {
  display: block;
  margin-left: auto;
  margin-right: auto;
  background: #f1f1f1;
}
.content {
  float: left;
  margin: 20px auto;
  text-align: center;
  width: 300px;
}
.content h1 {
  text-transform: uppercase;
  font-weight: 700;
  margin: 0 0 40px 0;
  font-size: 25px;
  line-height: 30px;
}
.circle {
  width: 100px;
  height: 100px;
  line-height: 100px;
  border-radius: 50%;
  /* the magic */
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  text-align: center;
  color: white;
  font-size: 16px;
  text-transform: uppercase;
  font-weight: 700;
  margin: 0 auto 20px;
}
.blue {
  background-color: #052D72;
}
.green {
  background-color: #16a085;
}
.red {
  background-color: #e74c3c;
}
<div class="content">
  <div class="circle blue"></div>
</div>
<div class="content">
  <div class="circle blue">Blue</div>
  <div class="circle blue"></div>
  <div class="circle blue"></div>
  <div class="circle blue"></div>
</div>
<div class="content">
  <div class="circle blue"></div>
  <div class="circle blue"></div>
</div>

所以,在 .content 中,我尝试添加这个:

vertical-align:baseline;

但我看不出有什么不同。

<div id="content"> 更改为 <div class="content"> 以便应用样式。

#content

添加 display:inline-block 并删除 float
.content {
    display: inline-block;
    margin: 20px auto;
    text-align: center;
    vertical-align: middle;
    width: 200px;
}

https://jsfiddle.net/k0fx384a/1/

编辑class:https://jsfiddle.net/k0fx384a/2/

您对多个元素使用了相同的 #id。这在所有浏览器的 HTML 中是不允许的(似乎 IE 和 FF 允许多个 #ids)。

所以只需将所有出现的 id="content" 更改为 class="content" 并且 CSS 应该开始工作。

DEMO

如果您希望它们垂直和水平对齐,我建议使用 flex。这提供了更大的灵活性并且更具前瞻性。

Mozilla Docs on Flex

如果您使用规则 align-items 和 justify-content,您将获得神奇的效果。查看示例:https://jsfiddle.net/vrad7yuj/

.container {
  display: flex;
  flex-direction: row;
  height: 100%;
  width: 100%;
  border: 2px solid #f00;
}
.col {
  border: 2px solid #00f;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.ball {
  border-radius: 50%;
  border: 1px solid #0f0;
  height: 60px;
  width: 60px;
}
<div class="container">
  <div class="col">
    <div class="ball"></div>
  </div>
  <div class="col">
    <div class="ball"></div>
    <div class="ball"></div>
    <div class="ball"></div>
    <div class="ball"></div>
  </div>
  <div class="col">
    <div class="ball"></div>
    <div class="ball"></div>
  </div>
</div>

或者,如果你想用少量的代码行来做到这一点,你可以使用 flexbox:

body {
  display: flex;
  margin-left: auto;
  margin-right: auto;
  background: #f1f1f1;
}
.content {
  display: flex;
  flex-direction: column;
  margin: 20px auto;
  text-align: center;
  width: 300px;
}
.content h1 {
  text-transform: uppercase;
  font-weight: 700;
  margin: 0 0 40px 0;
  font-size: 25px;
  line-height: 30px;
}
.circle {
  width: 100px;
  height: 100px;
  line-height: 100px;
  border-radius: 50%;
  /* the magic */
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  text-align: center;
  color: white;
  font-size: 16px;
  text-transform: uppercase;
  font-weight: 700;
  margin: 0 auto 20px;
}
.blue {
  background-color: #052D72;
}
.green {
  background-color: #16a085;
}
.red {
  background-color: #e74c3c;
}
<div class="content">
  <div class="circle blue"></div>
</div>
<div class="content">
  <div class="circle blue">Blue</div>
  <div class="circle blue"></div>
  <div class="circle blue"></div>
  <div class="circle blue"></div>
</div>
<div class="content">
  <div class="circle blue"></div>
  <div class="circle blue"></div>
</div>

看看 flexbox:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

应该只是一个替代方案和新知识给你。 ;-) 干杯。