Html 在div中居中图标-水平和垂直

Html 在div中居中图标-水平和垂直,html,css,Html,Css,我在父div中居中图标(垂直和水平)时遇到问题。我的页面上有许多大小不同的父div,因此我希望能够按比例将图标放置在每个父div的中心。下面是一个问题: HTML <div class="img_container"> <i class="icon-play-circle"></i> </div> <br> <div class="img_container2"> <i class="icon-play-ci

我在父div中居中图标(垂直和水平)时遇到问题。我的页面上有许多大小不同的父
div
,因此我希望能够按比例将图标放置在每个父div的中心。下面是一个问题:

HTML

<div class="img_container">
  <i class="icon-play-circle"></i>
</div>
<br>
<div class="img_container2">
  <i class="icon-play-circle"></i>
</div>
<div id="container">
    <a id="update" href="#">
        <i class="icon-refresh"></i>
    </a>
</div>

由于它们已经是
内联块
子元素,因此可以在父元素上设置
文本对齐:居中
,而无需在子元素上设置
宽度
边距:0px自动
。这意味着它将适用于动态生成的宽度不同的内容

.img_container, .img_container2 {
    text-align: center;
}
这将使子对象在两个
div
容器中居中

更新:

对于垂直居中,可以使用
calc()
函数,前提是图标的高度已知

.img_container > i, .img_container2 > i {
    position:relative;
    top: calc(50% - 10px); /* 50% - 3/4 of icon height */
}
-有效


如果在父级上设置了
display:table cell
,则也可以使用
vertical align:middle

水平居中与以下一样简单:

text-align: center
容器处于已知高度时的垂直居中:

height: 100px;
line-height: 100px;
vertical-align: middle
垂直居中,当容器高度未知时,可以在背景中设置图像:

background: url(someimage) no-repeat center center;

以下是一种在任何情况下垂直和水平居中内容的方法,当您不知道宽度或高度或两者都不知道时,此方法非常有用:

CSS

.img_container{
    width:100px;
    height:100px;
    position:relative;
    background:red;
}

.img_container2{
    width:100px;
    height:50px;
    position:relative;
    background:blue;
}

.icon-play-circle{
    position:absolute;
    top:45%;
    left:45%;
    color: white;
}
#container {
    display: table;
    width: 300px; /* not required, just for example */
    height: 400px; /* not required, just for example */
}

#update {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
HTML

<div class="img_container">
  <i class="icon-play-circle"></i>
</div>
<br>
<div class="img_container2">
  <i class="icon-play-circle"></i>
</div>
<div id="container">
    <a id="update" href="#">
        <i class="icon-refresh"></i>
    </a>
</div>


请注意,此处的宽度和高度值仅用于演示,您可以将它们更改为您想要的任何值(或完全删除它们),并且仍然可以使用,因为此处的垂直居中是
表格单元格
显示属性工作方式的产物。

这不只是将子对象水平居中(而不是垂直居中)吗是的,很抱歉我没有澄清。主要的问题是让它垂直居中。@Scientific我更新了它,以包括calc(),假设图标的高度已知。谢谢,Josh,我不知道calc!它工作得很好。你能把它作为一个答案加上吗?我会把它标为正确答案。我想这是“最好的”解决方案D