垂直居中浮动div中的文本和图像

时间:2015-10-29 19:14:03

标签: css

我看过一篇关于文本和图像垂直居中的文章。我看过一篇关于浮动div中垂直居中文本的文章。

但不是两个条件。

这是我的实验:

.phase {
  width: 500px;
  height: 500px;
  border: 1px solid red;
}
.float-right {
  float: right;
}
.carousel {
  height: 300px;
  display: table-cell;
  vertical-align: middle;
  border: 1px solid orange;
}
.circle {
  float: left;
  height: 50px;
  width: 50px;
  vertical-align: middle;
  border: 1px solid green;
  border-radius: 50%;
  background-color: white;
}
.thumbnail {
  float: left;
}
<div class="phase">
  <div class="float-right">
    <div class="carousel">
      <div class="circle">
      </div>
      <div class="thumbnail">
        <img src="https://www.google.com/images/nav_logo231.png" style="width:160px;height:160px;vertical-align:middle" />

      </div>
    </div>
  </div>
  <h1>I love css</h1>
</div>

请注意图像是垂直居中的,但绿色圆圈不是垂直居中的。

如何让图像和绿色圆圈垂直居中?

3 个答案:

答案 0 :(得分:1)

您需要将圆圈放在容器中并设置容器的line-height属性。试试这个:

.phase {
  width: 500px;
  border: 1px solid red;
}
.float-right {
  float: right;
}
.carousel {
  height: 300px;
  display: table-cell;
  vertical-align: middle;
  border: 1px solid orange;
}
.container {
  float: left;
  height: 300px;
  line-height: 300px;
}
.circle {
  display: inline-block;
  height: 50px;
  width: 50px;
  border: 1px solid green;
  border-radius: 50%;
  background-color: white;
}
.thumbnail {
  display: inline-block;
}
<div class="phase">
  <div class="float-right">
    <div class="carousel">
      <div class="container"><div class="circle">
      </div></div>
      <div class="container"><div class="thumbnail">
        <img src="https://www.google.com/images/nav_logo231.png" style="width:160px;height:160px;vertical-align:middle" />
      </div></div>
    </div>
  </div>
</div>

答案 1 :(得分:1)

您可以使用calc和view-units:

来实现完全居中的元素

#example {
    width: 100px;
    height: 100px;
    border: 1px solid green;
    border-radius: 50px;
    position: fixed;
    top: calc(50vh - 50px);
    left: calc(50vw - 50px);
}
<div id="example"></div>

即使滚动等,此示例也会将其保持在中心位置 - 但您可以使用绝对位置将其置于基于初始视图的中心位置。

答案 2 :(得分:1)

我的固定代码。它适用于IE和Chrome。

top: calc(0.5vh + 50px);就是诀窍。 50px当然是你要垂直居中的元素的高度。

.phase {
  width: 500px;
  height: 500px;
  border: 1px solid red;
}

.float-right {
  float: right;
}

.carousel {
  height: 300px;
  display: table-cell;
  vertical-align: middle;
  border: 1px solid orange;
}

.circle {
  position: relative;
  float: left;
  top: calc(0.5vh + 50px);
  height: 50px;
  width: 50px;
  vertical-align: middle;
  border: 1px solid green;
  border-radius: 50%;
  background-color: white;
}

.thumbnail {
  float: left;
  border: 1px solid black;
}
<div class="phase">
  <div class="float-right">
    <div class="carousel">
      <div class="circle">
      </div>
      <div class="thumbnail">
        <img src="https://www.google.com/images/nav_logo231.png" style="width:160px;height:160px;" />
      </div>
    </div>
  </div>
  <h1>I love css</h1>
</div>